UNPKG

ember-legacy-class-transform

Version:
64 lines (55 loc) 5.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Walker = function () { function Walker(order) { _classCallCheck(this, Walker); this.order = order; this.stack = []; } Walker.prototype.visit = function 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(); }; Walker.prototype.children = function children(node, callback) { var visitor = visitors[node.type]; if (visitor) { visitor(this, node, callback); } }; return Walker; }(); exports.default = Walker; var visitors = { Program: function (walker, node, callback) { for (var i = 0; i < node.body.length; i++) { walker.visit(node.body[i], callback); } }, ElementNode: function (walker, node, callback) { for (var i = 0; i < node.children.length; i++) { walker.visit(node.children[i], callback); } }, BlockStatement: function (walker, node, callback) { walker.visit(node.program, callback); walker.visit(node.inverse || null, callback); } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90cmF2ZXJzYWwvd2Fsa2VyLmpzIl0sIm5hbWVzIjpbIldhbGtlciIsIm9yZGVyIiwic3RhY2siLCJ2aXNpdCIsIm5vZGUiLCJjYWxsYmFjayIsInB1c2giLCJjaGlsZHJlbiIsInBvcCIsInZpc2l0b3IiLCJ2aXNpdG9ycyIsInR5cGUiLCJQcm9ncmFtIiwid2Fsa2VyIiwiaSIsImJvZHkiLCJsZW5ndGgiLCJFbGVtZW50Tm9kZSIsIkJsb2NrU3RhdGVtZW50IiwicHJvZ3JhbSIsImludmVyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQXFCLEEscUJBQ2pCO29CQUFBLEFBQVksT0FBTzs4QkFDZjs7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxRQUFMLEFBQWEsQUFDaEI7OztxQkFDRCxBLHVCLEFBQU0sTSxBQUFNLFVBQVUsQUFDbEI7WUFBSSxDQUFKLEFBQUssTUFBTSxBQUNQO0FBQ0g7QUFDRDthQUFBLEFBQUssTUFBTCxBQUFXLEtBQVgsQUFBZ0IsQUFDaEI7WUFBSSxLQUFBLEFBQUssVUFBVCxBQUFtQixRQUFRLEFBQ3ZCO2lCQUFBLEFBQUssU0FBTCxBQUFjLE1BQWQsQUFBb0IsQUFDcEI7cUJBQUEsQUFBUyxNQUFULEFBQWUsQUFDbEI7QUFIRCxlQUdPLEFBQ0g7cUJBQUEsQUFBUyxNQUFULEFBQWUsQUFDZjtpQkFBQSxBQUFLLFNBQUwsQUFBYyxNQUFkLEFBQW9CLEFBQ3ZCO0FBQ0Q7YUFBQSxBQUFLLE1BQUwsQUFBVyxBQUNkO0E7O3FCQUNELEEsNkJBQVMsQSxNLEFBQU0sVUFBVSxBQUNyQjtZQUFJLFVBQVUsU0FBUyxLQUF2QixBQUFjLEFBQWMsQUFDNUI7WUFBQSxBQUFJLFNBQVMsQUFDVDtvQkFBQSxBQUFRLE1BQVIsQUFBYyxNQUFkLEFBQW9CLEFBQ3ZCO0FBQ0o7QTs7Ozs7a0IsQUF4QmdCOzs7QUEwQnJCLElBQUk7QUFBVyx1QkFBQSxBQUNILFFBREcsQUFDSyxNQURMLEFBQ1csVUFBVSxBQUM1QjthQUFLLElBQUksSUFBVCxBQUFhLEdBQUcsSUFBSSxLQUFBLEFBQUssS0FBekIsQUFBOEIsUUFBOUIsQUFBc0MsS0FBSyxBQUN2QzttQkFBQSxBQUFPLE1BQU0sS0FBQSxBQUFLLEtBQWxCLEFBQWEsQUFBVSxJQUF2QixBQUEyQixBQUM5QjtBQUNKO0FBTFUsQUFNWDtBQU5XLDJCQUFBLEFBTUMsUUFORCxBQU1TLE1BTlQsQUFNZSxVQUFVLEFBQ2hDO2FBQUssSUFBSSxJQUFULEFBQWEsR0FBRyxJQUFJLEtBQUEsQUFBSyxTQUF6QixBQUFrQyxRQUFsQyxBQUEwQyxLQUFLLEFBQzNDO21CQUFBLEFBQU8sTUFBTSxLQUFBLEFBQUssU0FBbEIsQUFBYSxBQUFjLElBQTNCLEFBQStCLEFBQ2xDO0FBQ0o7QUFWVSxBQVdYO0FBWFcsOEJBQUEsQUFXSSxRQVhKLEFBV1ksTUFYWixBQVdrQixVQUFVLEFBQ25DO2VBQUEsQUFBTyxNQUFNLEtBQWIsQUFBa0IsU0FBbEIsQUFBMkIsQUFDM0I7ZUFBQSxBQUFPLE1BQU0sS0FBQSxBQUFLLFdBQWxCLEFBQTZCLE1BQTdCLEFBQW1DLEFBQ3RDO0FBZEwsQUFBZTtBQUFBLEFBQ1giLCJmaWxlIjoibGliL3RyYXZlcnNhbC93YWxrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXIge1xuICAgIGNvbnN0cnVjdG9yKG9yZGVyKSB7XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIH1cbiAgICB2aXNpdChub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9yZGVyID09PSAncG9zdCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgY2FsbGJhY2sobm9kZSwgdGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayhub2RlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIGNoaWxkcmVuKG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCB2aXNpdG9yID0gdmlzaXRvcnNbbm9kZS50eXBlXTtcbiAgICAgICAgaWYgKHZpc2l0b3IpIHtcbiAgICAgICAgICAgIHZpc2l0b3IodGhpcywgbm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxufVxubGV0IHZpc2l0b3JzID0ge1xuICAgIFByb2dyYW0od2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBFbGVtZW50Tm9kZSh3YWxrZXIsIG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuY2hpbGRyZW5baV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQmxvY2tTdGF0ZW1lbnQod2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICB3YWxrZXIudmlzaXQobm9kZS5wcm9ncmFtLCBjYWxsYmFjayk7XG4gICAgICAgIHdhbGtlci52aXNpdChub2RlLmludmVyc2UgfHwgbnVsbCwgY2FsbGJhY2spO1xuICAgIH1cbn07Il19