index.js 668 B

1234567891011121314151617181920212223242526272829
  1. 'use strict'
  2. module.exports = visit
  3. var visitParents = require('unist-util-visit-parents')
  4. var CONTINUE = visitParents.CONTINUE
  5. var SKIP = visitParents.SKIP
  6. var EXIT = visitParents.EXIT
  7. visit.CONTINUE = CONTINUE
  8. visit.SKIP = SKIP
  9. visit.EXIT = EXIT
  10. function visit(tree, test, visitor, reverse) {
  11. if (typeof test === 'function' && typeof visitor !== 'function') {
  12. reverse = visitor
  13. visitor = test
  14. test = null
  15. }
  16. visitParents(tree, test, overload, reverse)
  17. function overload(node, parents) {
  18. var parent = parents[parents.length - 1]
  19. var index = parent ? parent.children.indexOf(node) : null
  20. return visitor(node, index, parent)
  21. }
  22. }