2 ms·
1. uh... oh 2. I'm not sure if I understand your correctly, but it should work if you wrap it in (). I actually have that very same example in 'broken.js' [0]
by chmod775 12y ago
1. uh... oh
2. I'm not sure if I understand your correctly, but it should work if you wrap it in (). I actually have that very same example in 'broken.js' [0]
3. Sure. As you can write normal JavaScript, just use:
Car.x = (arg){
//etc
}
The ':' operator is supposed to be a shortcut for X.prototype.Y
[0]: https://github.com/binlain/designtojs/blob/master/test/broken.djs https://github.com/binlain/designtojs/blob/master/test/broke...
- dmitrig01 12y agoSorry, should have clarified on 2. As an expansion of one of the examples given: loadAndPrintFile: (contents) { if (!contents) { fs.readFile() -> (error!, contents) } console.log(contents); } i.e., expected behavior would be as if readFile was not an async function. I'm asking because I built something similar (though it only worked with promises, not general async functions), and I'm curious to compare approaches :-) - mine is a sweet.js macro: http://pastie.org/9410315 http://pastie.org/9410315 (uses https://github.com/petkaantonov/bluebird https://github.com/petkaantonov/bluebird and https://github.com/BranchMetrics/promise-accum https://github.com/BranchMetrics/promise-accum). The basic syntax would be: task { item1 <- LoadItem(1); item2 <- LoadItem(item1.foreign_key); ret <- DoSomethingWithItems(item1, item2); }
- chmod775 12y agoThe JavaScript result of your example looks like this: (again, beautified because DesignToJS crams everything in one line to preserve the line numbers of your actual code): function loadAndPrintFile(contents) { if (!contents) { fs.readFile(function(error, contents){ if(error !== null && error !== undefined){ return error; } }); } console.log(contents); } If you omit the function body, it will only expand to the end of the current logical 'context' (or whatever it's called) I'd suggest writing it like this in DesignToJS: loadAndPrintFile: (contents! console.log) { fs.readFile() -> (error!, contents! console.log) } Result looks like this: function loadAndPrintFile(contents) { if(contents !== null && contents !== undefined){ return console.log(contents); } fs.readFile(function(error, contents){ if(error !== null && error !== undefined){ return error; } if(contents !== null && contents !== undefined){ return console.log(contents); } }); } Edit: I just submitted a patch that avoids unnecessary binding of 'this' if 'this' is not actually used.
- dmitrig01 12y agoAh, very interesting use of the ! operator.
- asynchrony 12y agoIn Javascript (contents !== null && contents !== undefined) is equivalent to (contents != null).
- chmod775 12y agoNow that is good to know, thank you. I'll make that change asap.