regenerator
Advanced tools
Comparing version 0.4.4 to 0.4.5
@@ -12,3 +12,3 @@ /** | ||
var assert = require("assert"); | ||
var types = require("ast-types"); | ||
var types = require("recast").types; | ||
var isArray = types.builtInTypes.array; | ||
@@ -15,0 +15,0 @@ var b = types.builders; |
@@ -12,3 +12,3 @@ /** | ||
var assert = require("assert"); | ||
var types = require("ast-types"); | ||
var types = require("recast").types; | ||
var n = types.namedTypes; | ||
@@ -15,0 +15,0 @@ var b = types.builders; |
@@ -12,3 +12,3 @@ /** | ||
var assert = require("assert"); | ||
var types = require("ast-types"); | ||
var types = require("recast").types; | ||
var n = types.namedTypes; | ||
@@ -15,0 +15,0 @@ var b = types.builders; |
@@ -13,3 +13,3 @@ /** | ||
var m = require("private").makeAccessor(); | ||
var types = require("ast-types"); | ||
var types = require("recast").types; | ||
var isArray = types.builtInTypes.array; | ||
@@ -16,0 +16,0 @@ var n = types.namedTypes; |
@@ -12,3 +12,3 @@ /** | ||
var assert = require("assert"); | ||
var types = require("ast-types"); | ||
var types = require("recast").types; | ||
var n = types.namedTypes; | ||
@@ -15,0 +15,0 @@ var b = types.builders; |
67
main.js
@@ -18,16 +18,7 @@ /** | ||
var types = recast.types; | ||
var esprimaHarmony = require("esprima"); | ||
var genFunExp = /\bfunction\s*\*/; | ||
var blockBindingExp = /\b(let|const)\s+/; | ||
assert.ok( | ||
/harmony/.test(esprimaHarmony.version), | ||
"Bad esprima version: " + esprimaHarmony.version | ||
); | ||
function regenerator(source, options) { | ||
options = utils.defaults(options || {}, { | ||
includeRuntime: false, | ||
supportBlockBinding: true | ||
}); | ||
options = normalizeOptions(options); | ||
@@ -42,3 +33,5 @@ var runtime = options.includeRuntime ? fs.readFileSync( | ||
var path = parse(source); | ||
var recastOptions = getRecastOptions(options); | ||
var ast = recast.parse(source, recastOptions); | ||
var path = new types.NodePath(ast); | ||
var programPath = path.get("program"); | ||
@@ -55,16 +48,41 @@ | ||
return recast.print(path).code; | ||
return recast.print(path, recastOptions).code; | ||
} | ||
function parse(source) { | ||
types.builtInTypes.string.assert(source); | ||
function normalizeOptions(options) { | ||
options = utils.defaults(options || {}, { | ||
includeRuntime: false, | ||
supportBlockBinding: true | ||
}); | ||
var ast = recast.parse(source, { | ||
// Use the harmony branch of Esprima that installs with regenerator | ||
// instead of the master branch that recast provides. | ||
esprima: esprimaHarmony, | ||
if (!options.esprima) { | ||
options.esprima = require("esprima"); | ||
} | ||
assert.ok( | ||
/harmony/.test(options.esprima.version), | ||
"Bad esprima version: " + options.esprima.version | ||
); | ||
return options; | ||
} | ||
function getRecastOptions(options) { | ||
var recastOptions = { | ||
range: true | ||
}); | ||
}; | ||
return new types.NodePath(ast); | ||
function copy(name) { | ||
if (name in options) { | ||
recastOptions[name] = options[name]; | ||
} | ||
} | ||
copy("esprima"); | ||
copy("sourceFileName"); | ||
copy("sourceMapName"); | ||
copy("inputSourceMap"); | ||
copy("sourceRoot"); | ||
return recastOptions; | ||
} | ||
@@ -83,6 +101,7 @@ | ||
function varify(source) { | ||
var path = parse(source); | ||
varifyAst(path.get("program").node); | ||
return recast.print(path).code; | ||
function varify(source, options) { | ||
var recastOptions = getRecastOptions(normalizeOptions(options)); | ||
var ast = recast.parse(source, recastOptions); | ||
varifyAst(ast.program); | ||
return recast.print(ast, recastOptions).code; | ||
} | ||
@@ -89,0 +108,0 @@ |
@@ -19,3 +19,3 @@ { | ||
], | ||
"version": "0.4.4", | ||
"version": "0.4.5", | ||
"homepage": "http://github.com/facebook/regenerator", | ||
@@ -34,5 +34,4 @@ "repository": { | ||
"esprima": "git://github.com/ariya/esprima.git#harmony", | ||
"ast-types": "^0.3.20", | ||
"recast": "^0.5.11", | ||
"private": "^0.1.2", | ||
"recast": "~0.5.13", | ||
"private": "~0.1.2", | ||
"defs": "~0.6.2" | ||
@@ -39,0 +38,0 @@ }, |
@@ -853,2 +853,20 @@ /** | ||
}); | ||
it("should work for nested generator function declarations", function() { | ||
function *outer(n) { | ||
yield 0; | ||
assert.ok(wrapGenerator.isGeneratorFunction(inner)); | ||
return yield* inner(n); | ||
// Note that this function declaration comes after everything else | ||
// in the outer function, but needs to be fully available above. | ||
function *inner(n) { | ||
yield n - 1; | ||
yield n; | ||
return yield n + 1; | ||
} | ||
} | ||
check(outer(2), [0, 1, 2, 3], 4); | ||
}); | ||
}); | ||
@@ -855,0 +873,0 @@ |
112241
5
3301
- Removedast-types@^0.3.20
Updatedprivate@~0.1.2
Updatedrecast@~0.5.13