Skip to content

Source transformer enabling ECMAScript 6 generator functions in JavaScript-of-today.

License

Notifications You must be signed in to change notification settings

gzzhanghao/regenerator

This branch is 1 commit ahead of, 296 commits behind facebook/regenerator:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f79fb61 · Nov 23, 2017
Nov 23, 2017
Aug 15, 2017
Nov 30, 2016
Nov 22, 2017
Nov 23, 2017
Nov 21, 2016
Feb 17, 2017
Jul 23, 2017
Apr 22, 2014
Mar 12, 2014
May 4, 2015
Sep 18, 2017
Jul 23, 2017
Dec 1, 2016
Nov 22, 2017
Nov 22, 2017
May 2, 2016
May 2, 2016

Repository files navigation

regenerator Build Status

This package implements a fully-functional source transformation that takes the syntax for generators/yield from ECMAScript 2015 or ES2015 and Asynchronous Iteration proposal and spits out efficient JS-of-today (ES5) that behaves the same way.

A small runtime library (less than 1KB compressed) is required to provide the wrapGenerator function. You can install it either as a CommonJS module or as a standalone .js file, whichever you prefer.

Installation

From npm:

npm install -g regenerator

From GitHub:

cd path/to/node_modules
git clone git://github.com/facebook/regenerator.git
cd regenerator
npm install .
npm test

Usage

You have several options for using this module.

Simplest usage:

regenerator es6.js > es5.js # Just the transform.
regenerator --include-runtime es6.js > es5.js # Add the runtime too.
regenerator src lib # Transform every .js file in src and output to lib.

Programmatic usage:

var es5Source = require("regenerator").compile(es6Source).code;
var es5SourceWithRuntime = require("regenerator").compile(es6Source, {
  includeRuntime: true
}).code;

AST transformation:

var recast = require("recast");
var ast = recast.parse(es6Source);
ast = require("regenerator").transform(ast);
var es5Source = recast.print(ast);

How can you get involved?

The easiest way to get involved is to look for buggy examples using the sandbox, and when you find something strange just click the "report a bug" link (the new issue form will be populated automatically with the problematic code).

Alternatively, you can fork the repository, create some failing tests cases in test/tests.es6.js, and send pull requests for me to fix.

If you're feeling especially brave, you are more than welcome to dive into the transformer code and fix the bug(s) yourself, but I must warn you that the code could really benefit from better implementation comments.

About

Source transformer enabling ECMAScript 6 generator functions in JavaScript-of-today.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.6%
  • Other 0.4%