[Pkg-javascript-commits] [node-acorn-jsx] 93/484: Store default walker in exports.base, rather than exports itself
Bastien Roucariès
rouca at moszumanska.debian.org
Sat Aug 19 14:20:09 UTC 2017
This is an automated email from the git hooks/post-receive script.
rouca pushed a commit to branch master
in repository node-acorn-jsx.
commit d98e378590f0c936eba0ab403349f4568ba05df9
Author: Marijn Haverbeke <marijnh at gmail.com>
Date: Wed Jan 30 19:11:27 2013 +0100
Store default walker in exports.base, rather than exports itself
My initial idea, that client code would constantly need to access the individual
walker functions directly, isn't actually the case. This prevents unnecessary copying
of other interface functions into walkers.
---
util/walk.js | 77 ++++++++++++++++++++++++++++++------------------------------
1 file changed, 39 insertions(+), 38 deletions(-)
diff --git a/util/walk.js b/util/walk.js
index 01f12c2..8e9233c 100644
--- a/util/walk.js
+++ b/util/walk.js
@@ -19,7 +19,7 @@
// walker, and state can be used to give this walked an initial
// state.
exports.simple = function(node, visitors, base, state) {
- if (!base) base = exports;
+ if (!base) base = exports.base;
function c(node, st, override) {
var type = override || node.type, found = visitors[type];
base[type](node, st, c);
@@ -48,7 +48,7 @@
// undefined when it doesn't find a matching node.
exports.findNodeAt = function(node, start, end, targetType, base, state) {
try {
- if (!base) base = exports;
+ if (!base) base = exports.base;
var c = function(node, st, override) {
var type = override || node.type;
if ((start == null || node.start <= start) &&
@@ -70,7 +70,7 @@
// position. Interface similar to findNodeAt.
exports.findNodeAround = function(node, pos, targetType, base, state) {
try {
- if (!base) base = exports;
+ if (!base) base = exports.base;
var c = function(node, st, override) {
var type = override || node.type;
var inside = node.start <= pos && node.end >= pos;
@@ -89,7 +89,7 @@
// Used to create a custom walker. Will fill in all missing node
// type properties with the defaults.
exports.make = function(funcs, base) {
- if (!base) base = exports;
+ if (!base) base = exports.base;
var visitor = {};
for (var type in base) visitor[type] = base[type];
for (var type in funcs) visitor[type] = funcs[type];
@@ -101,29 +101,30 @@
// Node walkers.
- exports.Program = exports.BlockStatement = function(node, st, c) {
+ var base = exports.base = {};
+ base.Program = base.BlockStatement = function(node, st, c) {
for (var i = 0; i < node.body.length; ++i)
c(node.body[i], st, "Statement");
};
- exports.Statement = skipThrough;
- exports.EmptyStatement = ignore;
- exports.ExpressionStatement = function(node, st, c) {
+ base.Statement = skipThrough;
+ base.EmptyStatement = ignore;
+ base.ExpressionStatement = function(node, st, c) {
c(node.expression, st, "Expression");
};
- exports.IfStatement = function(node, st, c) {
+ base.IfStatement = function(node, st, c) {
c(node.test, st, "Expression");
c(node.consequent, st, "Statement");
if (node.alternate) c(node.alternate, st, "Statement");
};
- exports.LabeledStatement = function(node, st, c) {
+ base.LabeledStatement = function(node, st, c) {
c(node.body, st, "Statement");
};
- exports.BreakStatement = exports.ContinueStatement = ignore;
- exports.WithStatement = function(node, st, c) {
+ base.BreakStatement = base.ContinueStatement = ignore;
+ base.WithStatement = function(node, st, c) {
c(node.object, st, "Expression");
c(node.body, st, "Statement");
};
- exports.SwitchStatement = function(node, st, c) {
+ base.SwitchStatement = function(node, st, c) {
c(node.discriminant, st, "Expression");
for (var i = 0; i < node.cases.length; ++i) {
var cs = node.cases[i];
@@ -132,96 +133,96 @@
c(cs.consequent[j], st, "Statement");
}
};
- exports.ReturnStatement = function(node, st, c) {
+ base.ReturnStatement = function(node, st, c) {
if (node.argument) c(node.argument, st, "Expression");
};
- exports.ThrowStatement = function(node, st, c) {
+ base.ThrowStatement = function(node, st, c) {
c(node.argument, st, "Expression");
};
- exports.TryStatement = function(node, st, c) {
+ base.TryStatement = function(node, st, c) {
c(node.block, st, "Statement");
for (var i = 0; i < node.handlers.length; ++i)
c(node.handlers[i].body, st, "ScopeBody");
if (node.finalizer) c(node.finalizer, st, "Statement");
};
- exports.WhileStatement = function(node, st, c) {
+ base.WhileStatement = function(node, st, c) {
c(node.test, st, "Expression");
c(node.body, st, "Statement");
};
- exports.DoWhileStatement = exports.WhileStatement;
- exports.ForStatement = function(node, st, c) {
+ base.DoWhileStatement = base.WhileStatement;
+ base.ForStatement = function(node, st, c) {
if (node.init) c(node.init, st, "ForInit");
if (node.test) c(node.test, st, "Expression");
if (node.update) c(node.update, st, "Expression");
c(node.body, st, "Statement");
};
- exports.ForInStatement = function(node, st, c) {
+ base.ForInStatement = function(node, st, c) {
c(node.left, st, "ForInit");
c(node.right, st, "Expression");
c(node.body, st, "Statement");
};
- exports.ForInit = function(node, st, c) {
+ base.ForInit = function(node, st, c) {
if (node.type == "VariableDeclaration") c(node, st);
else c(node, st, "Expression");
};
- exports.DebuggerStatement = ignore;
+ base.DebuggerStatement = ignore;
- exports.FunctionDeclaration = function(node, st, c) {
+ base.FunctionDeclaration = function(node, st, c) {
c(node, st, "Function");
};
- exports.VariableDeclaration = function(node, st, c) {
+ base.VariableDeclaration = function(node, st, c) {
for (var i = 0; i < node.declarations.length; ++i) {
var decl = node.declarations[i];
if (decl.init) c(decl.init, st, "Expression");
}
};
- exports.Function = function(node, st, c) {
+ base.Function = function(node, st, c) {
c(node.body, st, "ScopeBody");
};
- exports.ScopeBody = function(node, st, c) {
+ base.ScopeBody = function(node, st, c) {
c(node, st, "Statement");
};
- exports.Expression = skipThrough;
- exports.ThisExpression = ignore;
- exports.ArrayExpression = function(node, st, c) {
+ base.Expression = skipThrough;
+ base.ThisExpression = ignore;
+ base.ArrayExpression = function(node, st, c) {
for (var i = 0; i < node.elements.length; ++i) {
var elt = node.elements[i];
if (elt) c(elt, st, "Expression");
}
};
- exports.ObjectExpression = function(node, st, c) {
+ base.ObjectExpression = function(node, st, c) {
for (var i = 0; i < node.properties.length; ++i)
c(node.properties[i].value, st, "Expression");
};
- exports.FunctionExpression = exports.FunctionDeclaration;
- exports.SequenceExpression = function(node, st, c) {
+ base.FunctionExpression = base.FunctionDeclaration;
+ base.SequenceExpression = function(node, st, c) {
for (var i = 0; i < node.expressions.length; ++i)
c(node.expressions[i], st, "Expression");
};
- exports.UnaryExpression = exports.UpdateExpression = function(node, st, c) {
+ base.UnaryExpression = base.UpdateExpression = function(node, st, c) {
c(node.argument, st, "Expression");
};
- exports.BinaryExpression = exports.AssignmentExpression = exports.LogicalExpression = function(node, st, c) {
+ base.BinaryExpression = base.AssignmentExpression = base.LogicalExpression = function(node, st, c) {
c(node.left, st, "Expression");
c(node.right, st, "Expression");
};
- exports.ConditionalExpression = function(node, st, c) {
+ base.ConditionalExpression = function(node, st, c) {
c(node.test, st, "Expression");
c(node.consequent, st, "Expression");
c(node.alternate, st, "Expression");
};
- exports.NewExpression = exports.CallExpression = function(node, st, c) {
+ base.NewExpression = base.CallExpression = function(node, st, c) {
c(node.callee, st, "Expression");
if (node.arguments) for (var i = 0; i < node.arguments.length; ++i)
c(node.arguments[i], st, "Expression");
};
- exports.MemberExpression = function(node, st, c) {
+ base.MemberExpression = function(node, st, c) {
c(node.object, st, "Expression");
if (node.computed) c(node.property, st, "Expression");
};
- exports.Identifier = exports.Literal = ignore;
+ base.Identifier = base.Literal = ignore;
// A custom walker that keeps track of the scope chain and the
// variables defined in it.
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-acorn-jsx.git
More information about the Pkg-javascript-commits
mailing list