ember-legacy-class-transform
Version:
The default blueprint for ember-cli addons.
54 lines (47 loc) • 5.16 kB
JavaScript
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;
}();
export 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90cmF2ZXJzYWwvd2Fsa2VyLmpzIl0sIm5hbWVzIjpbIldhbGtlciIsIm9yZGVyIiwic3RhY2siLCJ2aXNpdCIsIm5vZGUiLCJjYWxsYmFjayIsInB1c2giLCJjaGlsZHJlbiIsInBvcCIsInZpc2l0b3IiLCJ2aXNpdG9ycyIsInR5cGUiLCJQcm9ncmFtIiwid2Fsa2VyIiwiaSIsImJvZHkiLCJsZW5ndGgiLCJFbGVtZW50Tm9kZSIsIkJsb2NrU3RhdGVtZW50IiwicHJvZ3JhbSIsImludmVyc2UiXSwibWFwcGluZ3MiOiI7O0lBQXFCQSxNO0FBQ2pCLG9CQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQ2YsYUFBS0EsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0MsS0FBTCxHQUFhLEVBQWI7QUFDSDs7cUJBQ0RDLEssa0JBQU1DLEksRUFBTUMsUSxFQUFVO0FBQ2xCLFlBQUksQ0FBQ0QsSUFBTCxFQUFXO0FBQ1A7QUFDSDtBQUNELGFBQUtGLEtBQUwsQ0FBV0ksSUFBWCxDQUFnQkYsSUFBaEI7QUFDQSxZQUFJLEtBQUtILEtBQUwsS0FBZSxNQUFuQixFQUEyQjtBQUN2QixpQkFBS00sUUFBTCxDQUFjSCxJQUFkLEVBQW9CQyxRQUFwQjtBQUNBQSxxQkFBU0QsSUFBVCxFQUFlLElBQWY7QUFDSCxTQUhELE1BR087QUFDSEMscUJBQVNELElBQVQsRUFBZSxJQUFmO0FBQ0EsaUJBQUtHLFFBQUwsQ0FBY0gsSUFBZCxFQUFvQkMsUUFBcEI7QUFDSDtBQUNELGFBQUtILEtBQUwsQ0FBV00sR0FBWDtBQUNILEs7O3FCQUNERCxRLHFCQUFTSCxJLEVBQU1DLFEsRUFBVTtBQUNyQixZQUFJSSxVQUFVQyxTQUFTTixLQUFLTyxJQUFkLENBQWQ7QUFDQSxZQUFJRixPQUFKLEVBQWE7QUFDVEEsb0JBQVEsSUFBUixFQUFjTCxJQUFkLEVBQW9CQyxRQUFwQjtBQUNIO0FBQ0osSzs7Ozs7ZUF4QmdCTCxNOztBQTBCckIsSUFBSVUsV0FBVztBQUNYRSxXQURXLFlBQ0hDLE1BREcsRUFDS1QsSUFETCxFQUNXQyxRQURYLEVBQ3FCO0FBQzVCLGFBQUssSUFBSVMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJVixLQUFLVyxJQUFMLENBQVVDLE1BQTlCLEVBQXNDRixHQUF0QyxFQUEyQztBQUN2Q0QsbUJBQU9WLEtBQVAsQ0FBYUMsS0FBS1csSUFBTCxDQUFVRCxDQUFWLENBQWIsRUFBMkJULFFBQTNCO0FBQ0g7QUFDSixLQUxVO0FBTVhZLGVBTlcsWUFNQ0osTUFORCxFQU1TVCxJQU5ULEVBTWVDLFFBTmYsRUFNeUI7QUFDaEMsYUFBSyxJQUFJUyxJQUFJLENBQWIsRUFBZ0JBLElBQUlWLEtBQUtHLFFBQUwsQ0FBY1MsTUFBbEMsRUFBMENGLEdBQTFDLEVBQStDO0FBQzNDRCxtQkFBT1YsS0FBUCxDQUFhQyxLQUFLRyxRQUFMLENBQWNPLENBQWQsQ0FBYixFQUErQlQsUUFBL0I7QUFDSDtBQUNKLEtBVlU7QUFXWGEsa0JBWFcsWUFXSUwsTUFYSixFQVdZVCxJQVhaLEVBV2tCQyxRQVhsQixFQVc0QjtBQUNuQ1EsZUFBT1YsS0FBUCxDQUFhQyxLQUFLZSxPQUFsQixFQUEyQmQsUUFBM0I7QUFDQVEsZUFBT1YsS0FBUCxDQUFhQyxLQUFLZ0IsT0FBTCxJQUFnQixJQUE3QixFQUFtQ2YsUUFBbkM7QUFDSDtBQWRVLENBQWYiLCJmaWxlIjoibGliL3RyYXZlcnNhbC93YWxrZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBjbGFzcyBXYWxrZXIge1xuICAgIGNvbnN0cnVjdG9yKG9yZGVyKSB7XG4gICAgICAgIHRoaXMub3JkZXIgPSBvcmRlcjtcbiAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIH1cbiAgICB2aXNpdChub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoIW5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9yZGVyID09PSAncG9zdCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgY2FsbGJhY2sobm9kZSwgdGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWxsYmFjayhub2RlLCB0aGlzKTtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4obm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIGNoaWxkcmVuKG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCB2aXNpdG9yID0gdmlzaXRvcnNbbm9kZS50eXBlXTtcbiAgICAgICAgaWYgKHZpc2l0b3IpIHtcbiAgICAgICAgICAgIHZpc2l0b3IodGhpcywgbm9kZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfVxufVxubGV0IHZpc2l0b3JzID0ge1xuICAgIFByb2dyYW0od2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuYm9keS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuYm9keVtpXSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBFbGVtZW50Tm9kZSh3YWxrZXIsIG5vZGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgd2Fsa2VyLnZpc2l0KG5vZGUuY2hpbGRyZW5baV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgQmxvY2tTdGF0ZW1lbnQod2Fsa2VyLCBub2RlLCBjYWxsYmFjaykge1xuICAgICAgICB3YWxrZXIudmlzaXQobm9kZS5wcm9ncmFtLCBjYWxsYmFjayk7XG4gICAgICAgIHdhbGtlci52aXNpdChub2RlLmludmVyc2UgfHwgbnVsbCwgY2FsbGJhY2spO1xuICAgIH1cbn07Il19