more traverse comments
This commit is contained in:
@@ -2,8 +2,10 @@ var VISITOR_KEYS = require("./visitor-keys");
|
||||
var _ = require("lodash");
|
||||
|
||||
var traverse = module.exports = function (parent, callbacks, blacklistTypes) {
|
||||
// falsy node
|
||||
if (!parent) return;
|
||||
|
||||
// array of nodes
|
||||
if (_.isArray(parent)) {
|
||||
_.each(parent, function (node) {
|
||||
traverse(node, callbacks, blacklistTypes);
|
||||
@@ -11,14 +13,15 @@ var traverse = module.exports = function (parent, callbacks, blacklistTypes) {
|
||||
return;
|
||||
}
|
||||
|
||||
// unknown node type to traverse
|
||||
var keys = VISITOR_KEYS[parent.type];
|
||||
if (!keys) return;
|
||||
|
||||
// blacklist these node types from being traversed
|
||||
blacklistTypes = blacklistTypes || [];
|
||||
|
||||
if (_.isFunction(callbacks)) {
|
||||
callbacks = { enter: callbacks };
|
||||
}
|
||||
// normalise callbacks
|
||||
if (_.isFunction(callbacks)) callbacks = { enter: callbacks };
|
||||
|
||||
_.each(keys, function (key) {
|
||||
var nodes = parent[key];
|
||||
@@ -87,11 +90,15 @@ traverse.hasType = function (tree, type, blacklistTypes) {
|
||||
var has = false;
|
||||
|
||||
if (_.isArray(tree)) {
|
||||
// array of nodes, find the first
|
||||
return !!_.find(tree, function (node) {
|
||||
return traverse.hasType(node, type, blacklistTypes);
|
||||
});
|
||||
} else {
|
||||
// the node we're searching in is blacklisted
|
||||
if (_.contains(blacklistTypes, tree.type)) return false;
|
||||
|
||||
// the type we're looking for is the same as the passed node
|
||||
if (tree.type === type) return true;
|
||||
|
||||
traverse(tree, function (node) {
|
||||
|
||||
Reference in New Issue
Block a user