ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
64 lines (55 loc) • 5.17 kB
JavaScript
;
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