UNPKG

ember-legacy-class-transform

Version:
49 lines (48 loc) 4.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); class Walker { constructor(order) { this.order = order; this.stack = []; } visit(node, callback) { if (!node) { return; } this.stack.push(node); if (this.order === 'post') { this.children(node, callback); callback(node, this); } else { callback(node, this); this.children(node, callback); } this.stack.pop(); } children(node, callback) { let visitor = visitors[node.type]; if (visitor) { visitor(this, node, callback); } } } exports.default = Walker; let visitors = { Program(walker, node, callback) { for (let i = 0; i < node.body.length; i++) { walker.visit(node.body[i], callback); } }, ElementNode(walker, node, callback) { for (let i = 0; i < node.children.length; i++) { walker.visit(node.children[i], callback); } }, BlockStatement(walker, node, callback) { walker.visit(node.program, callback); walker.visit(node.inverse || null, callback); } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90cmF2ZXJzYWwvd2Fsa2VyLmpzIl0sIm5hbWVzIjpbIldhbGtlciIsImNvbnN0cnVjdG9yIiwib3JkZXIiLCJzdGFjayIsInZpc2l0Iiwibm9kZSIsImNhbGxiYWNrIiwicHVzaCIsImNoaWxkcmVuIiwicG9wIiwidmlzaXRvciIsInZpc2l0b3JzIiwidHlwZSIsIlByb2dyYW0iLCJ3YWxrZXIiLCJpIiwiYm9keSIsImxlbmd0aCIsIkVsZW1lbnROb2RlIiwiQmxvY2tTdGF0ZW1lbnQiLCJwcm9ncmFtIiwiaW52ZXJzZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBZSxNQUFNQSxNQUFOLENBQWE7QUFDeEJDLGdCQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0EsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0MsS0FBTCxHQUFhLEVBQWI7QUFDSDtBQUNEQyxVQUFNQyxJQUFOLEVBQVlDLFFBQVosRUFBc0I7QUFDbEIsWUFBSSxDQUFDRCxJQUFMLEVBQVc7QUFDUDtBQUNIO0FBQ0QsYUFBS0YsS0FBTCxDQUFXSSxJQUFYLENBQWdCRixJQUFoQjtBQUNBLFlBQUksS0FBS0gsS0FBTCxLQUFlLE1BQW5CLEVBQTJCO0FBQ3ZCLGlCQUFLTSxRQUFMLENBQWNILElBQWQsRUFBb0JDLFFBQXBCO0FBQ0FBLHFCQUFTRCxJQUFULEVBQWUsSUFBZjtBQUNILFNBSEQsTUFHTztBQUNIQyxxQkFBU0QsSUFBVCxFQUFlLElBQWY7QUFDQSxpQkFBS0csUUFBTCxDQUFjSCxJQUFkLEVBQW9CQyxRQUFwQjtBQUNIO0FBQ0QsYUFBS0gsS0FBTCxDQUFXTSxHQUFYO0FBQ0g7QUFDREQsYUFBU0gsSUFBVCxFQUFlQyxRQUFmLEVBQXlCO0FBQ3JCLFlBQUlJLFVBQVVDLFNBQVNOLEtBQUtPLElBQWQsQ0FBZDtBQUNBLFlBQUlGLE9BQUosRUFBYTtBQUNUQSxvQkFBUSxJQUFSLEVBQWNMLElBQWQsRUFBb0JDLFFBQXBCO0FBQ0g7QUFDSjtBQXhCdUI7a0JBQVBOLE07QUEwQnJCLElBQUlXLFdBQVc7QUFDWEUsWUFBUUMsTUFBUixFQUFnQlQsSUFBaEIsRUFBc0JDLFFBQXRCLEVBQWdDO0FBQzVCLGFBQUssSUFBSVMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJVixLQUFLVyxJQUFMLENBQVVDLE1BQTlCLEVBQXNDRixHQUF0QyxFQUEyQztBQUN2Q0QsbUJBQU9WLEtBQVAsQ0FBYUMsS0FBS1csSUFBTCxDQUFVRCxDQUFWLENBQWIsRUFBMkJULFFBQTNCO0FBQ0g7QUFDSixLQUxVO0FBTVhZLGdCQUFZSixNQUFaLEVBQW9CVCxJQUFwQixFQUEwQkMsUUFBMUIsRUFBb0M7QUFDaEMsYUFBSyxJQUFJUyxJQUFJLENBQWIsRUFBZ0JBLElBQUlWLEtBQUtHLFFBQUwsQ0FBY1MsTUFBbEMsRUFBMENGLEdBQTFDLEVBQStDO0FBQzNDRCxtQkFBT1YsS0FBUCxDQUFhQyxLQUFLRyxRQUFMLENBQWNPLENBQWQsQ0FBYixFQUErQlQsUUFBL0I7QUFDSDtBQUNKLEtBVlU7QUFXWGEsbUJBQWVMLE1BQWYsRUFBdUJULElBQXZCLEVBQTZCQyxRQUE3QixFQUF1QztBQUNuQ1EsZUFBT1YsS0FBUCxDQUFhQyxLQUFLZSxPQUFsQixFQUEyQmQsUUFBM0I7QUFDQVEsZUFBT1YsS0FBUCxDQUFhQyxLQUFLZ0IsT0FBTCxJQUFnQixJQUE3QixFQUFtQ2YsUUFBbkM7QUFDSDtBQWRVLENBQWYiLCJmaWxlIjoibGliL3RyYXZlcnNhbC93YWxrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXIge1xuICAgIGNvbnN0cnVjdG9yKG9yZGVyKSB7XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIH1cbiAgICB2aXNpdChub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9yZGVyID09PSAncG9zdCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgY2FsbGJhY2sobm9kZSwgdGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayhub2RlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIGNoaWxkcmVuKG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCB2aXNpdG9yID0gdmlzaXRvcnNbbm9kZS50eXBlXTtcbiAgICAgICAgaWYgKHZpc2l0b3IpIHtcbiAgICAgICAgICAgIHZpc2l0b3IodGhpcywgbm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxufVxubGV0IHZpc2l0b3JzID0ge1xuICAgIFByb2dyYW0od2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBFbGVtZW50Tm9kZSh3YWxrZXIsIG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuY2hpbGRyZW5baV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQmxvY2tTdGF0ZW1lbnQod2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICB3YWxrZXIudmlzaXQobm9kZS5wcm9ncmFtLCBjYWxsYmFjayk7XG4gICAgICAgIHdhbGtlci52aXNpdChub2RlLmludmVyc2UgfHwgbnVsbCwgY2FsbGJhY2spO1xuICAgIH1cbn07Il19