Merge pull request #1753 from loganfsmyth/optimize-call
Optimize NodePath#call a bit
This commit is contained in:
commit
7e080aa9d2
@ -9,10 +9,9 @@ export function call(key) {
|
|||||||
if (!node) return;
|
if (!node) return;
|
||||||
|
|
||||||
var opts = this.opts;
|
var opts = this.opts;
|
||||||
if (!opts[key] && !opts[node.type]) return;
|
|
||||||
|
|
||||||
var fns = [].concat(opts[key]);
|
for (var fns of [opts[key], opts[node.type] && opts[node.type][key]]){
|
||||||
if (opts[node.type]) fns = fns.concat(opts[node.type][key]);
|
if (!fns) continue;
|
||||||
|
|
||||||
for (var fn of (fns: Array)) {
|
for (var fn of (fns: Array)) {
|
||||||
if (!fn) continue;
|
if (!fn) continue;
|
||||||
@ -36,6 +35,7 @@ export function call(key) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -21,6 +21,8 @@ export function explode(visitor) {
|
|||||||
// ensure visitors are objects
|
// ensure visitors are objects
|
||||||
ensureEntranceObjects(visitor);
|
ensureEntranceObjects(visitor);
|
||||||
|
|
||||||
|
ensureCallbackArrays(visitor);
|
||||||
|
|
||||||
// add type wrappers
|
// add type wrappers
|
||||||
for (let nodeType in visitor) {
|
for (let nodeType in visitor) {
|
||||||
if (shouldIgnoreKey(nodeType)) continue;
|
if (shouldIgnoreKey(nodeType)) continue;
|
||||||
@ -73,6 +75,12 @@ export function explode(visitor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let nodeType in visitor) {
|
||||||
|
if (shouldIgnoreKey(nodeType)) continue;
|
||||||
|
|
||||||
|
ensureCallbackArrays(visitor[nodeType]);
|
||||||
|
}
|
||||||
|
|
||||||
return visitor;
|
return visitor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,6 +134,11 @@ function ensureEntranceObjects(obj) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ensureCallbackArrays(obj){
|
||||||
|
if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
|
||||||
|
if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
|
||||||
|
}
|
||||||
|
|
||||||
function addQueries(visitor) {
|
function addQueries(visitor) {
|
||||||
for (var selector in visitor.queries) {
|
for (var selector in visitor.queries) {
|
||||||
var fns = visitor.queries[selector];
|
var fns = visitor.queries[selector];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user