walker.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var Walker = /*#__PURE__*/function () {
  7. function Walker(order) {
  8. this.order = order;
  9. this.stack = [];
  10. }
  11. var _proto = Walker.prototype;
  12. _proto.visit = function visit(node, callback) {
  13. if (!node) {
  14. return;
  15. }
  16. this.stack.push(node);
  17. if (this.order === 'post') {
  18. this.children(node, callback);
  19. callback(node, this);
  20. } else {
  21. callback(node, this);
  22. this.children(node, callback);
  23. }
  24. this.stack.pop();
  25. };
  26. _proto.children = function children(node, callback) {
  27. switch (node.type) {
  28. case 'Block':
  29. case 'Template':
  30. return visitors.Program(this, node, callback);
  31. case 'ElementNode':
  32. return visitors.ElementNode(this, node, callback);
  33. case 'BlockStatement':
  34. return visitors.BlockStatement(this, node, callback);
  35. default:
  36. return;
  37. }
  38. };
  39. return Walker;
  40. }();
  41. exports.default = Walker;
  42. var visitors = {
  43. Program: function Program(walker, node, callback) {
  44. for (var i = 0; i < node.body.length; i++) {
  45. walker.visit(node.body[i], callback);
  46. }
  47. },
  48. Template: function Template(walker, node, callback) {
  49. for (var i = 0; i < node.body.length; i++) {
  50. walker.visit(node.body[i], callback);
  51. }
  52. },
  53. Block: function Block(walker, node, callback) {
  54. for (var i = 0; i < node.body.length; i++) {
  55. walker.visit(node.body[i], callback);
  56. }
  57. },
  58. ElementNode: function ElementNode(walker, node, callback) {
  59. for (var i = 0; i < node.children.length; i++) {
  60. walker.visit(node.children[i], callback);
  61. }
  62. },
  63. BlockStatement: function BlockStatement(walker, node, callback) {
  64. walker.visit(node.program, callback);
  65. walker.visit(node.inverse || null, callback);
  66. }
  67. };
  68. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3dhbGtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0lBTWMsTTtBQUVaLFdBQUEsTUFBQSxDQUFBLEtBQUEsRUFBa0M7QUFBZixTQUFBLEtBQUEsR0FBQSxLQUFBO0FBRFosU0FBQSxLQUFBLEdBQUEsRUFBQTtBQUMrQjs7OztTQUV0QyxLLEdBQUEsU0FBQSxLQUFBLENBQUEsSUFBQSxFQUFBLFFBQUEsRUFBc0U7QUFDcEUsUUFBSSxDQUFKLElBQUEsRUFBVztBQUNUO0FBQ0Q7O0FBRUQsU0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLElBQUE7O0FBRUEsUUFBSSxLQUFBLEtBQUEsS0FBSixNQUFBLEVBQTJCO0FBQ3pCLFdBQUEsUUFBQSxDQUFBLElBQUEsRUFBQSxRQUFBO0FBQ0EsTUFBQSxRQUFRLENBQUEsSUFBQSxFQUFSLElBQVEsQ0FBUjtBQUZGLEtBQUEsTUFHTztBQUNMLE1BQUEsUUFBUSxDQUFBLElBQUEsRUFBUixJQUFRLENBQVI7QUFDQSxXQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQTtBQUNEOztBQUVELFNBQUEsS0FBQSxDQUFBLEdBQUE7OztTQUdGLFEsR0FBQSxTQUFBLFFBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxFQUV3QztBQUV0QyxZQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsV0FBQSxPQUFBO0FBQ0EsV0FBQSxVQUFBO0FBQ0UsZUFBTyxRQUFRLENBQVIsT0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQVAsUUFBTyxDQUFQOztBQUNGLFdBQUEsYUFBQTtBQUNFLGVBQU8sUUFBUSxDQUFSLFdBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxFQUFQLFFBQU8sQ0FBUDs7QUFDRixXQUFBLGdCQUFBO0FBQ0UsZUFBTyxRQUFRLENBQVIsY0FBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBQVAsUUFBTyxDQUFQOztBQUNGO0FBQ0U7QUFUSjs7Ozs7OztBQWNKLElBQU0sUUFBUSxHQUFHO0FBQ2YsRUFBQSxPQURlLEVBQUEsU0FBQSxPQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBQ2dFO0FBQzdFLFNBQUssSUFBSSxDQUFDLEdBQVYsQ0FBQSxFQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFKLElBQUEsQ0FBcEIsTUFBQSxFQUFzQyxDQUF0QyxFQUFBLEVBQTJDO0FBQ3pDLE1BQUEsTUFBTSxDQUFOLEtBQUEsQ0FBYSxJQUFJLENBQUosSUFBQSxDQUFiLENBQWEsQ0FBYixFQUFBLFFBQUE7QUFDRDtBQUpZLEdBQUE7QUFPZixFQUFBLFFBUGUsRUFBQSxTQUFBLFFBQUEsQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLFFBQUEsRUFPa0U7QUFDL0UsU0FBSyxJQUFJLENBQUMsR0FBVixDQUFBLEVBQWdCLENBQUMsR0FBRyxJQUFJLENBQUosSUFBQSxDQUFwQixNQUFBLEVBQXNDLENBQXRDLEVBQUEsRUFBMkM7QUFDekMsTUFBQSxNQUFNLENBQU4sS0FBQSxDQUFhLElBQUksQ0FBSixJQUFBLENBQWIsQ0FBYSxDQUFiLEVBQUEsUUFBQTtBQUNEO0FBVlksR0FBQTtBQWFmLEVBQUEsS0FiZSxFQUFBLFNBQUEsS0FBQSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsUUFBQSxFQWE0RDtBQUN6RSxTQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBSixJQUFBLENBQXBCLE1BQUEsRUFBc0MsQ0FBdEMsRUFBQSxFQUEyQztBQUN6QyxNQUFBLE1BQU0sQ0FBTixLQUFBLENBQWEsSUFBSSxDQUFKLElBQUEsQ0FBYixDQUFhLENBQWIsRUFBQSxRQUFBO0FBQ0Q7QUFoQlksR0FBQTtBQW1CZixFQUFBLFdBbkJlLEVBQUEsU0FBQSxXQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBbUJ3RTtBQUNyRixTQUFLLElBQUksQ0FBQyxHQUFWLENBQUEsRUFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBSixRQUFBLENBQXBCLE1BQUEsRUFBMEMsQ0FBMUMsRUFBQSxFQUErQztBQUM3QyxNQUFBLE1BQU0sQ0FBTixLQUFBLENBQWEsSUFBSSxDQUFKLFFBQUEsQ0FBYixDQUFhLENBQWIsRUFBQSxRQUFBO0FBQ0Q7QUF0QlksR0FBQTtBQXlCZixFQUFBLGNBekJlLEVBQUEsU0FBQSxjQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxRQUFBLEVBeUIrRTtBQUM1RixJQUFBLE1BQU0sQ0FBTixLQUFBLENBQWEsSUFBSSxDQUFqQixPQUFBLEVBQUEsUUFBQTtBQUNBLElBQUEsTUFBTSxDQUFOLEtBQUEsQ0FBYSxJQUFJLENBQUosT0FBQSxJQUFiLElBQUEsRUFBQSxRQUFBO0FBQ0Q7QUE1QmMsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb24gfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcblxuZXhwb3J0IHR5cGUgTm9kZUNhbGxiYWNrPE4gZXh0ZW5kcyBBU1R2MS5Ob2RlPiA9IChub2RlOiBOLCB3YWxrZXI6IFdhbGtlcikgPT4gdm9pZDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2Fsa2VyIHtcbiAgcHVibGljIHN0YWNrOiB1bmtub3duW10gPSBbXTtcbiAgY29uc3RydWN0b3IocHVibGljIG9yZGVyPzogdW5rbm93bikge31cblxuICB2aXNpdDxOIGV4dGVuZHMgQVNUdjEuTm9kZT4obm9kZTogT3B0aW9uPE4+LCBjYWxsYmFjazogTm9kZUNhbGxiYWNrPE4+KTogdm9pZCB7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGFjay5wdXNoKG5vZGUpO1xuXG4gICAgaWYgKHRoaXMub3JkZXIgPT09ICdwb3N0Jykge1xuICAgICAgdGhpcy5jaGlsZHJlbihub2RlLCBjYWxsYmFjayk7XG4gICAgICBjYWxsYmFjayhub2RlLCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sobm9kZSwgdGhpcyk7XG4gICAgICB0aGlzLmNoaWxkcmVuKG5vZGUsIGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG5cbiAgY2hpbGRyZW48TiBleHRlbmRzIEFTVHYxLk5vZGU+KFxuICAgIG5vZGU6IE4gJiBBU1R2MS5Ob2RlLFxuICAgIGNhbGxiYWNrOiBOb2RlQ2FsbGJhY2s8TiAmIEFTVHYxLk5vZGU+XG4gICk6IHZvaWQge1xuICAgIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgICBjYXNlICdCbG9jayc6XG4gICAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICAgIHJldHVybiB2aXNpdG9ycy5Qcm9ncmFtKHRoaXMsIChub2RlIGFzIHVua25vd24pIGFzIEFTVHYxLlByb2dyYW0sIGNhbGxiYWNrKTtcbiAgICAgIGNhc2UgJ0VsZW1lbnROb2RlJzpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3JzLkVsZW1lbnROb2RlKHRoaXMsIG5vZGUsIGNhbGxiYWNrKTtcbiAgICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgICAgcmV0dXJuIHZpc2l0b3JzLkJsb2NrU3RhdGVtZW50KHRoaXMsIG5vZGUsIGNhbGxiYWNrKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgdmlzaXRvcnMgPSB7XG4gIFByb2dyYW0od2Fsa2VyOiBXYWxrZXIsIG5vZGU6IEFTVHYxLlByb2dyYW0sIGNhbGxiYWNrOiBOb2RlQ2FsbGJhY2s8QVNUdjEuTm9kZT4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICBUZW1wbGF0ZSh3YWxrZXI6IFdhbGtlciwgbm9kZTogQVNUdjEuVGVtcGxhdGUsIGNhbGxiYWNrOiBOb2RlQ2FsbGJhY2s8QVNUdjEuTm9kZT4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICBCbG9jayh3YWxrZXI6IFdhbGtlciwgbm9kZTogQVNUdjEuQmxvY2ssIGNhbGxiYWNrOiBOb2RlQ2FsbGJhY2s8QVNUdjEuTm9kZT4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgIH1cbiAgfSxcblxuICBFbGVtZW50Tm9kZSh3YWxrZXI6IFdhbGtlciwgbm9kZTogQVNUdjEuRWxlbWVudE5vZGUsIGNhbGxiYWNrOiBOb2RlQ2FsbGJhY2s8QVNUdjEuTm9kZT4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHdhbGtlci52aXNpdChub2RlLmNoaWxkcmVuW2ldLCBjYWxsYmFjayk7XG4gICAgfVxuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50KHdhbGtlcjogV2Fsa2VyLCBub2RlOiBBU1R2MS5CbG9ja1N0YXRlbWVudCwgY2FsbGJhY2s6IE5vZGVDYWxsYmFjazxBU1R2MS5CbG9jaz4pIHtcbiAgICB3YWxrZXIudmlzaXQobm9kZS5wcm9ncmFtLCBjYWxsYmFjayk7XG4gICAgd2Fsa2VyLnZpc2l0KG5vZGUuaW52ZXJzZSB8fCBudWxsLCBjYWxsYmFjayk7XG4gIH0sXG59IGFzIGNvbnN0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==