UNPKG

js2coffee

Version:

JavaScript to CoffeeScript compiler

385 lines (306 loc) 16.3 kB
## [v2.2.0] > Apr 2, 2016 - [#397] - Fix cases of blocks not indenting properly ([@rianhunter]) [v2.2.0]: https://github.com/js2coffee/js2coffee/compare/v2.1.0...v2.2.0 ## [v2.1.0] > Jul 3, 2015 - [#383] - Update Esprima version. ([@ariya]) [#383]: https://github.com/js2coffee/js2coffee/issues/383 [@ariya]: https://github.com/ariya [v2.1.0]: https://github.com/js2coffee/js2coffee/compare/v2.0.4...v2.1.0 ## [v2.0.4] > May 5, 2015 - Fix `a - (b + c)` incorrectly dropping parentheses ([#373]) - `if (x in y)` now translates to `x of y` instead of `in` ([@snowyu], [#355]) - Fix "Cannot read property 'line' of undefined" errors ([@snowyu], [#356]) ## [v2.0.3] > Feb 14, 2015 - Remove 'coffee-script' as hard dependency, just use pre-built distribution ([#351]) ## [v2.0.2] > Feb 13, 2015 - Fix nesting division operators (eg: `a / (b * c)`) ([#348]) - Add 'coffee-script' as a hard dependency ([#351]) ## [v2.0.1] > Feb 10, 2015 - Upgrade from `esprima-harmony` to `esprima-fb` v10001.1.0 ([#343]) - Fix multiple unary operators not being spaced properly (eg: `a - - - b`) ([#339]) - Fix nesting subtraction operators (eg: `a - (b - c)`) ([#347]) - Fix nesting ternary operators (eg: `a ? (b ? c : d) e`) ([#345]) ## v2.0.0 > Feb 2, 2015 Full rewrite that features the Esprima parser. This release resolves a lot of issues, a lot of which are tracked with the ["fixed in 2.0"][fixed] label. Check the [migration guide](notes/Migration_guide.md) for information on what's changed from v0 to v2.0. [fixed]: https://github.com/js2coffee/js2coffee/issues?q=label%3A%22fixed+in+2.0%22+is%3Aclosed ---- v0.3.5 - December 11, 2014 -------------------- - fix complex update statements for issue [#49](https://github.com/js2coffee/js2coffee/issues/49) - move docpad-eco plugin to dev dependency [#327](https://github.com/js2coffee/js2coffee/issues/327) v0.3.4 - December 01, 2014 -------------------- - fix missing newline after `throw` [#320](https://github.com/js2coffee/js2coffee/issues/320) - fix `continue` within loops [#49](https://github.com/js2coffee/js2coffee/issues/49) v0.3.3 - August 23, 2014 -------------------- - add error handling during conversion v0.3.2 - August 23, 2014 -------------------- - online editor: fix scrolling for safari - online editor: [add favicon](https://github.com/js2coffee/js2coffee/issues/274) - online editor: [fix options usage](https://github.com/js2coffee/js2coffee/issues/296) - [fix block comments](https://github.com/js2coffee/js2coffee/issues/309) - [merge 275](https://github.com/js2coffee/js2coffee/pull/275) thanks to [liukun](https://github.com/liukun) - [merge 276](https://github.com/js2coffee/js2coffee/pull/276) thanks to [liukun](https://github.com/liukun) - [merge 184](https://github.com/js2coffee/js2coffee/pull/184) thanks to [Carl Fürstenberg](https://github.com/azatoth) - [fix `x != undefined`](https://github.com/js2coffee/js2coffee/issues/301) - [fix `for in`](https://github.com/js2coffee/js2coffee/issues/284) - [fix CLI error code](https://github.com/js2coffee/js2coffee/issues/282) - [show line numbers in errors](https://github.com/js2coffee/js2coffee/issues/158) v0.3.1 - July 11, 2014 -------------------- - Update dependencies - Fixed DocPad always being installed (only needed for dev) v0.3.0 - May 17, 2014 -------------------- - Updated for CoffeeScript ~1.7.1 from ~1.6.3 - Browserify build no longer includes the entire `package.json` file - It was only used for the version number, which is now inserted automatically via our build script v0.2.7 - Februrary 7, 2014 -------------------- - fix [merge [#233] swtich with >2 cases](https://github.com/js2coffee/js2coffee/pull/233) thanks to [Tomasz Szatkowski](https://github.com/szatkus) v0.2.6 - January 31, 2014 -------------------- - fix [fix [#252] install fails on unbutu](https://github.com/js2coffee/js2coffee/issues/252) v0.2.5 - January 20, 2014 -------------------- - merged [Add implicit returns (mostly fixes [#48])](https://github.com/rstacruz/js2coffee/pull/168) thanks to [Dave Burt](https://github.com/dburt) v0.2.4 - January 03, 2014 -------------------- - merged [fixes [#240]: treat unrecognised extensions as JS; support JSON](https://github.com/rstacruz/js2coffee/issues/241) thanks to [Michael Ficarra](https://github.com/michaelficarra) - merged [Fix incorrect translation of unbracketed then/else (fixes [#141], [#182])](https://github.com/rstacruz/js2coffee/issues/226) fixes also [#108](https://github.com/rstacruz/js2coffee/issues/108) - thanks to [@nateschiffer](https://github.com/nateschiffer) - merged [Parenthesize function expressions that are part of member expressions](https://github.com/rstacruz/js2coffee/issues/155) fixed [#222](https://github.com/rstacruz/js2coffee/issues/222), [#135](https://github.com/rstacruz/js2coffee/issues/135), [#55](https://github.com/rstacruz/js2coffee/issues/55), [#177](https://github.com/rstacruz/js2coffee/issues/177) thanks to [@karlbohlmark](https://github.com/karlbohlmark) - merged [Support empty for loops. Closes [#116].](https://github.com/rstacruz/js2coffee/issues/120) thanks to [Ryunosuke Sato](https://github.com/tricknotes) v0.2.3 - October 19, 2013 -------------------- - fixed nopt issue [issue #231](https://github.com/rstacruz/js2coffee/issues/231) v0.2.2 - October 14, 2013 -------------------- - Replace option parser with nopt - add CLI option for indent [issue #143](https://github.com/rstacruz/js2coffee/issues/143) - add CLI option for single quoted string literals - use ansidiff in tests for colored assertion errors - you can pass build options as a JSON comment in test files: `// OPTIONS:{"single_quotes":true}` v0.2.0 - September 26, 2013 -------------------- - Nested objects and arrays are now easier to read - Thanks to [Anton Wilhelm](https://github.com/timaschew) for [issue #224](https://github.com/rstacruz/js2coffee/issues/224) and [pull request #227](https://github.com/rstacruz/js2coffee/pull/227) v0.1.4 - June 7, 2013 -------------------- Thanks to [@balupton], [@tsantef], [@ForbesLindesay] - [Fixed CoffeeScript version problems](https://github.com/rstacruz/js2coffee/issues/189) - [Use only compatible coffee-script version](https://github.com/rstacruz/js2coffee/pull/196) - [Defines RESERVED words if not defined](https://github.com/rstacruz/js2coffee/pull/194) - Rewrote to only use local coffee-script installation, rather than using global installation - [Fixed global leak](https://github.com/rstacruz/js2coffee/pull/174) - Tests now use the [Joe Test Runner](https://github.com/bevry/joe), instead of using nothing before - Watched, compiled, bundled, and automatically tested with [DocPad](http://docpad.org/) - Added [TravisCI](https://travis-ci.org/) support v0.1.3 - January 6, 2012 -------------------- Small "emergency" bugfixes, thanks [@tricknotes]. ### Fixed: * Exit when compilation completes in Node 0.6. ([#112]) * Fix typo in the help text when typing `js2coffee`. ([#113]) v0.1.2 - October 15, 2011 --------------------- Thanks to [@Wisdom], [@nilbus], [@joelvh], [@gabipurcaru], [@michaelficarra], [@tricknotes], [@eventualbuddha], [@clkao] for the contributions. ### Fixed: * Fix misspelling in package.json. * Object lookups using object literals (`o[{a:1, b:2}]`) are now supported. * Fixed `js2coffee file.js` not working in Linux. ([#90], [#54]) * Returning from an if without curly braces are now supported. (`if (x) return y;`)) ([#50]) * Returning object literals should now have the objects parenthesized properly. ( `return {x:1, y:2}`) ([#52]) * Always new-line objects to support `{ a: { b: c } }`. ([#96], [#94]) * Reserved words are now allowed as property accessors. Fixes `object.on(...)`. ([#97], [#95], [#75]) * Empty switch cases now get compiled correctly. ([#70], [#28]) * The value `undefined` now gets compiled properly. ([#20], [#85]) * Declaring `var x` will now translate to `x = undefined`. ([#79]) * Updated reserved keywords list. ([#25], [#67]) ### Changed: * Compile `!!` into `!!` instead of `not not`. ([#30]) * Implement CRLF support. Closes ([#81], [#88]) * `!!!x` now condenses to `not x`. * `==` and `===` now become `is`. ([#29]) * `!(a instanceof b)` now becomes `a not instanceof b`. ([#29]) * Doing `var x = y` will now have different behavior for reserved keywords. ([#79]) ### Misc changes: * Fixed bad link in README. ([#63]) * Make `npm test` run tests. * Running tests now shows less output. * Running tests now exits with an error code when it fails. v0.1.1 - July 09, 2011 --------------------- ### Fixed: * Invert the 'a == null' behavior. ([#19], [#51]) * Fix the problem where passing an anonymous function as a parameter can sometimes lead to syntax errors. ([#55]) v0.1.0 - June 13, 2011 --------------------- Lots of refactoring and new improvements. ### Added: * Single line ifs. `if (x) continue;` will now compile to `continue if x`. * Hide empty catches. ([#32]). * `try { .. } catch (f) {}` now becomes `try ..` without a catch. * Omit returns more agressively. ([#42]) * Omit many unneeded parentheses in certain cases. ([#31]) ### Fixed: * Fix `x.prototype.y` to be `x::y` instead of `x::.y` ([#24]) * The `in` operator now compiles to `of`. ([#46]) * `a in b` now compiles to `a of b`. * Fix floating point numbers. ([#45]) * Fix a problem with returning object literals. ([#47]) ### Refactoring: * Lots and lots of refactoring. * `Builder` is now a class (to support warnings in the future, and more). * Implement a new `Transformer` class to do AST transformations before building the compiled source. * Recursive functions now use `Node::walk()`. * Move stuff into `js2coffee/helpers.coffee` and `js2coffee/node_ext.coffee`. v0.0.5 - June 10, 2011 --------------------- Special thanks to [Michael Ficarra](http://github.com/michaelficarra) for agressively reporting issues and suggesting numerous improvements. ### Added: * Account for negative existence checks (`if !x?`). ([#19]) * Compile `if (x != null)` to `unless x?` * Compile `if (x === null)` to `if x?` * Ensure object literals with more than one property get surrounded by `({ .. })`. ([#8]) * Support `debugger`. ([#27]) * Support destructuring in functions. ([#17]) * Use `loop` instead of `while true` in while and for loops. ([#35]) * Use the `::` prototype operator. ([#24]) * Use `unless` and `until` as the inverse of `if` and `while` respectively. ([#35]) ### Fixed: * Keys in object literals now get quoted if needed. This fixes the erroneous compilation of objects such as `{ 'click #button': function() { ... } }`. v0.0.4 - June 09, 2011 --------------------- ### Changed: * Allow single-line JS comments without a newline in the end. * Enquote identifiers in object literals as needed. ([#16]) * Ensure that percent interpolation (%i) don't get messed up in the Node version. ([#13]) * Ensure that when anonymous functions are called, they are parenthesized. ([#14]) ### Added: * more tests. ### Fixed: * `++b` is now no longer erroneously translated to `b++`. * Fixed an issue where `{ off: 2 }` erroneously becomes `{ off_: 2 }`. * Returning object literals should now not create invalid CoffeeScript. ([#15]) ### Misc: * Annotate the source code. * Make a simpler (but less stringent) JS packing routine for `js2coffee.min.js`. v0.0.3 - June 05, 2011 --------------------- ### Fixed: * Narcissus to not go into an infinite loop in the browser. * Use `this` instead of `@` for better readability. ([#10]) ### Changed: * Implement += and friends. ([#9]) * Use 'cake' instead of 'make'. v0.0.2 - June 4, 2011 --------------------- ### Changed: * Better string escaping * Better handling of empty blocks * Support for commas (eg: `a = 2, b = 3`) * Returns and breaks are omitted when not needed * Switch/case now uses `switch` instead of `if` * Some other improvements v0.0.1 ------ Initial version. [#373]: https://github.com/js2coffee/js2coffee/issues/373 [#351]: https://github.com/js2coffee/js2coffee/issues/351 [#348]: https://github.com/js2coffee/js2coffee/issues/348 [#343]: https://github.com/js2coffee/js2coffee/issues/343 [#339]: https://github.com/js2coffee/js2coffee/issues/339 [#347]: https://github.com/js2coffee/js2coffee/issues/347 [#345]: https://github.com/js2coffee/js2coffee/issues/345 [#233]: https://github.com/js2coffee/js2coffee/issues/233 [#252]: https://github.com/js2coffee/js2coffee/issues/252 [#48]: https://github.com/js2coffee/js2coffee/issues/48 [#240]: https://github.com/js2coffee/js2coffee/issues/240 [#141]: https://github.com/js2coffee/js2coffee/issues/141 [#182]: https://github.com/js2coffee/js2coffee/issues/182 [#116]: https://github.com/js2coffee/js2coffee/issues/116 [#112]: https://github.com/js2coffee/js2coffee/issues/112 [#113]: https://github.com/js2coffee/js2coffee/issues/113 [#90]: https://github.com/js2coffee/js2coffee/issues/90 [#54]: https://github.com/js2coffee/js2coffee/issues/54 [#50]: https://github.com/js2coffee/js2coffee/issues/50 [#52]: https://github.com/js2coffee/js2coffee/issues/52 [#96]: https://github.com/js2coffee/js2coffee/issues/96 [#94]: https://github.com/js2coffee/js2coffee/issues/94 [#97]: https://github.com/js2coffee/js2coffee/issues/97 [#95]: https://github.com/js2coffee/js2coffee/issues/95 [#75]: https://github.com/js2coffee/js2coffee/issues/75 [#70]: https://github.com/js2coffee/js2coffee/issues/70 [#28]: https://github.com/js2coffee/js2coffee/issues/28 [#20]: https://github.com/js2coffee/js2coffee/issues/20 [#85]: https://github.com/js2coffee/js2coffee/issues/85 [#79]: https://github.com/js2coffee/js2coffee/issues/79 [#25]: https://github.com/js2coffee/js2coffee/issues/25 [#67]: https://github.com/js2coffee/js2coffee/issues/67 [#30]: https://github.com/js2coffee/js2coffee/issues/30 [#81]: https://github.com/js2coffee/js2coffee/issues/81 [#88]: https://github.com/js2coffee/js2coffee/issues/88 [#29]: https://github.com/js2coffee/js2coffee/issues/29 [#63]: https://github.com/js2coffee/js2coffee/issues/63 [#19]: https://github.com/js2coffee/js2coffee/issues/19 [#51]: https://github.com/js2coffee/js2coffee/issues/51 [#55]: https://github.com/js2coffee/js2coffee/issues/55 [#32]: https://github.com/js2coffee/js2coffee/issues/32 [#42]: https://github.com/js2coffee/js2coffee/issues/42 [#31]: https://github.com/js2coffee/js2coffee/issues/31 [#24]: https://github.com/js2coffee/js2coffee/issues/24 [#46]: https://github.com/js2coffee/js2coffee/issues/46 [#45]: https://github.com/js2coffee/js2coffee/issues/45 [#47]: https://github.com/js2coffee/js2coffee/issues/47 [#8]: https://github.com/js2coffee/js2coffee/issues/8 [#27]: https://github.com/js2coffee/js2coffee/issues/27 [#17]: https://github.com/js2coffee/js2coffee/issues/17 [#35]: https://github.com/js2coffee/js2coffee/issues/35 [#16]: https://github.com/js2coffee/js2coffee/issues/16 [#13]: https://github.com/js2coffee/js2coffee/issues/13 [#14]: https://github.com/js2coffee/js2coffee/issues/14 [#15]: https://github.com/js2coffee/js2coffee/issues/15 [#10]: https://github.com/js2coffee/js2coffee/issues/10 [#9]: https://github.com/js2coffee/js2coffee/issues/9 [@balupton]: https://github.com/balupton [@tsantef]: https://github.com/tsantef [@ForbesLindesay]: https://github.com/ForbesLindesay [@tricknotes]: https://github.com/tricknotes [@Wisdom]: https://github.com/Wisdom [@nilbus]: https://github.com/nilbus [@joelvh]: https://github.com/joelvh [@gabipurcaru]: https://github.com/gabipurcaru [@michaelficarra]: https://github.com/michaelficarra [@eventualbuddha]: https://github.com/eventualbuddha [@clkao]: https://github.com/clkao [v2.0.4]: https://github.com/js2coffee/js2coffee/compare/v2.0.3...v2.0.4 [v2.0.3]: https://github.com/js2coffee/js2coffee/compare/v2.0.2...v2.0.3 [v2.0.2]: https://github.com/js2coffee/js2coffee/compare/v2.0.1...v2.0.2 [v2.0.1]: https://github.com/js2coffee/js2coffee/compare/v2.0.0...v2.0.1 [#355]: https://github.com/js2coffee/js2coffee/issues/355 [#356]: https://github.com/js2coffee/js2coffee/issues/356 [@snowyu]: https://github.com/snowyu [#397]: https://github.com/js2coffee/js2coffee/issues/397 [@rianhunter]: https://github.com/rianhunter