es6-comprehensions
Compiles JavaScript array comprehensions (proposed in ES6) to ES5-compatible syntax. For instance:
var squared = for x of 12345 if x > 2 x * x ;
compiles to:
var { ... };var { ... }; var { var $__result = ; for var $__0 = $__1; !$__1 = $__0nextdone; var x = $__1value; if x > 2 $__result; return $__result;};
I'm glad to inform you that es6-comprehensions is now a part of es-next project.
For more information check out the current draft for ECMAScript 6.
Please notice that the syntax has changed and many resources is still using the old one.
Installation
$ npm install es6-comprehensions [--save]
Support
Array comprehensions progressed to the Draft ECMAScript 6 Specification. It doesn't mean that there will be no changes or that array comprehensions will be included in the final ES6 Specification.
ES6 defines also iterators that can be used together with for-of loops that can be used in array comprehensions. This translator does not support iterators in for-of
loops. It translates for-of
loops to plain for
loops. Thus, it supports only plain JS arrays.
Todo
- Consider replacing plain
for
loop withforEach
method. It will result in more compact code, Consider migration to escodegen.Removed in order to follow up esnext's dependencies.
Development
- Clone the repository.
- Run
npm install
. - Do your changes.
Pull requests are highly appreciated.
Changelog
v0.3.1
- Switched to
esprima-fb
.
v0.3.0
- Added support for
for...of
loop. (Thanks @vslinko for PR.) Important! Generated code contains two more necessary functions.
v0.2.3
- Binding current scope to the generated function expression. This allows one to use
this
in an array comprehension. An example can be found in a test file. (Thanks @vslinko for PR.)
v0.2.2
- Using ast-util to generate safe temporary variables.
v0.2.1
- Replaced ComprehensionExpression with CallExpression instead of ExpressionStatement.
v0.2.0
- Changed API to conform to esnext's requirements.
License
BSD