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