mirror of https://gitee.com/antv-l7/antv-l7
30 lines
668 B
JavaScript
30 lines
668 B
JavaScript
'use strict'
|
|
|
|
module.exports = visit
|
|
|
|
var visitParents = require('unist-util-visit-parents')
|
|
|
|
var CONTINUE = visitParents.CONTINUE
|
|
var SKIP = visitParents.SKIP
|
|
var EXIT = visitParents.EXIT
|
|
|
|
visit.CONTINUE = CONTINUE
|
|
visit.SKIP = SKIP
|
|
visit.EXIT = EXIT
|
|
|
|
function visit(tree, test, visitor, reverse) {
|
|
if (typeof test === 'function' && typeof visitor !== 'function') {
|
|
reverse = visitor
|
|
visitor = test
|
|
test = null
|
|
}
|
|
|
|
visitParents(tree, test, overload, reverse)
|
|
|
|
function overload(node, parents) {
|
|
var parent = parents[parents.length - 1]
|
|
var index = parent ? parent.children.indexOf(node) : null
|
|
return visitor(node, index, parent)
|
|
}
|
|
}
|