ast-types
Advanced tools
Comparing version 0.2.25 to 0.3.0
@@ -20,3 +20,5 @@ var types = require("./lib/types"); | ||
exports.eachField = types.eachField; | ||
exports.someField = types.someField; | ||
exports.traverse = require("./lib/traverse"); | ||
exports.finalize = types.finalize; | ||
exports.NodePath = require("./lib/node-path"); |
@@ -21,3 +21,3 @@ { | ||
], | ||
"version": "0.2.25", | ||
"version": "0.3.0", | ||
"homepage": "http://github.com/benjamn/ast-types", | ||
@@ -24,0 +24,0 @@ "repository": { |
@@ -9,2 +9,4 @@ var types = require("../main"); | ||
var parse = esprima.parse; | ||
var Path = require("ast-path").Path; | ||
var NodePath = require("../lib/node-path"); | ||
@@ -326,2 +328,36 @@ exports.testBasic = function(t, assert) { | ||
exports.testNodePath = function(t, assert) { | ||
assert.strictEqual(new Path({}).constructor, Path); | ||
var np = new NodePath(b.identifier("foo")); | ||
assert.strictEqual(np.constructor, NodePath); | ||
assert.ok(np.get("name") instanceof NodePath); | ||
var ast = b.expressionStatement( | ||
b.unaryExpression("!", b.sequenceExpression([ | ||
b.identifier("a"), | ||
b.identifier("b"), | ||
b.identifier("c") | ||
])) | ||
); | ||
var path = new NodePath(ast); | ||
var opPath = path.get("expression", "operator"); | ||
assert.strictEqual(opPath.value, "!"); | ||
assert.strictEqual(opPath.node, ast.expression); | ||
assert.strictEqual(opPath.parent, path); | ||
assert.strictEqual(opPath.parent.node, ast); | ||
var argPath = path.get("expression", "argument"); | ||
assert.ok(argPath.needsParens()); | ||
var exprsPath = argPath.get("expressions"); | ||
assert.ok(!exprsPath.needsParens()); | ||
assert.strictEqual(exprsPath.get("length").value, 3); | ||
assert.ok(!exprsPath.get(1).needsParens()); | ||
t.finish(); | ||
}; | ||
var scope = [ | ||
@@ -328,0 +364,0 @@ "var foo = 42;", |
402199
11296