@glimmer/util
Version:
Common utilities used in Glimmer
46 lines (39 loc) • 4.1 kB
JavaScript
export function dict() {
return Object.create(null);
}
export function isDict(u) {
return u !== null && u !== undefined;
}
export function isObject(u) {
return typeof u === 'function' || typeof u === 'object' && u !== null;
}
export class StackImpl {
constructor(values = []) {
this.current = null;
this.stack = values;
}
get size() {
return this.stack.length;
}
push(item) {
this.current = item;
this.stack.push(item);
}
pop() {
let item = this.stack.pop();
let len = this.stack.length;
this.current = len === 0 ? null : this.stack[len - 1];
return item === undefined ? null : item;
}
nth(from) {
let len = this.stack.length;
return len < from ? null : this.stack[len - from];
}
isEmpty() {
return this.stack.length === 0;
}
toArray() {
return this.stack;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3V0aWwvbGliL2NvbGxlY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU0sU0FBVSxJQUFWLEdBQWM7QUFDbEIsU0FBTyxNQUFNLENBQUMsTUFBUCxDQUFjLElBQWQsQ0FBUDtBQUNEO0FBRUQsT0FBTSxTQUFVLE1BQVYsQ0FBb0IsQ0FBcEIsRUFBd0I7QUFDNUIsU0FBTyxDQUFDLEtBQUssSUFBTixJQUFjLENBQUMsS0FBSyxTQUEzQjtBQUNEO0FBRUQsT0FBTSxTQUFVLFFBQVYsQ0FBc0IsQ0FBdEIsRUFBMEI7QUFDOUIsU0FBTyxPQUFPLENBQVAsS0FBYSxVQUFiLElBQTRCLE9BQU8sQ0FBUCxLQUFhLFFBQWIsSUFBeUIsQ0FBQyxLQUFLLElBQWxFO0FBQ0Q7QUFFRCxPQUFNLE1BQU8sU0FBUCxDQUFnQjtBQUlwQixFQUFBLFdBQUEsQ0FBWSxNQUFBLEdBQWMsRUFBMUIsRUFBNEI7QUFGckIsU0FBQSxPQUFBLEdBQXFCLElBQXJCO0FBR0wsU0FBSyxLQUFMLEdBQWEsTUFBYjtBQUNEOztBQUVELE1BQVcsSUFBWCxHQUFlO0FBQ2IsV0FBTyxLQUFLLEtBQUwsQ0FBVyxNQUFsQjtBQUNEOztBQUVELEVBQUEsSUFBSSxDQUFDLElBQUQsRUFBUTtBQUNWLFNBQUssT0FBTCxHQUFlLElBQWY7QUFDQSxTQUFLLEtBQUwsQ0FBVyxJQUFYLENBQWdCLElBQWhCO0FBQ0Q7O0FBRUQsRUFBQSxHQUFHLEdBQUE7QUFDRCxRQUFJLElBQUksR0FBRyxLQUFLLEtBQUwsQ0FBVyxHQUFYLEVBQVg7QUFDQSxRQUFJLEdBQUcsR0FBRyxLQUFLLEtBQUwsQ0FBVyxNQUFyQjtBQUNBLFNBQUssT0FBTCxHQUFlLEdBQUcsS0FBSyxDQUFSLEdBQVksSUFBWixHQUFtQixLQUFLLEtBQUwsQ0FBVyxHQUFHLEdBQUcsQ0FBakIsQ0FBbEM7QUFFQSxXQUFPLElBQUksS0FBSyxTQUFULEdBQXFCLElBQXJCLEdBQTRCLElBQW5DO0FBQ0Q7O0FBRUQsRUFBQSxHQUFHLENBQUMsSUFBRCxFQUFhO0FBQ2QsUUFBSSxHQUFHLEdBQUcsS0FBSyxLQUFMLENBQVcsTUFBckI7QUFDQSxXQUFPLEdBQUcsR0FBRyxJQUFOLEdBQWEsSUFBYixHQUFvQixLQUFLLEtBQUwsQ0FBVyxHQUFHLEdBQUcsSUFBakIsQ0FBM0I7QUFDRDs7QUFFRCxFQUFBLE9BQU8sR0FBQTtBQUNMLFdBQU8sS0FBSyxLQUFMLENBQVcsTUFBWCxLQUFzQixDQUE3QjtBQUNEOztBQUVELEVBQUEsT0FBTyxHQUFBO0FBQ0wsV0FBTyxLQUFLLEtBQVo7QUFDRDs7QUFwQ21CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdCwgT3B0aW9uLCBTdGFjayB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZGljdDxUID0gdW5rbm93bj4oKTogRGljdDxUPiB7XG4gIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWN0PFQ+KHU6IFQpOiB1IGlzIERpY3QgJiBUIHtcbiAgcmV0dXJuIHUgIT09IG51bGwgJiYgdSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3Q8VD4odTogVCk6IHUgaXMgb2JqZWN0ICYgVCB7XG4gIHJldHVybiB0eXBlb2YgdSA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIHUgPT09ICdvYmplY3QnICYmIHUgIT09IG51bGwpO1xufVxuXG5leHBvcnQgY2xhc3MgU3RhY2tJbXBsPFQ+IGltcGxlbWVudHMgU3RhY2s8VD4ge1xuICBwcml2YXRlIHN0YWNrOiBUW107XG4gIHB1YmxpYyBjdXJyZW50OiBPcHRpb248VD4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlczogVFtdID0gW10pIHtcbiAgICB0aGlzLnN0YWNrID0gdmFsdWVzO1xuICB9XG5cbiAgcHVibGljIGdldCBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgfVxuXG4gIHB1c2goaXRlbTogVCkge1xuICAgIHRoaXMuY3VycmVudCA9IGl0ZW07XG4gICAgdGhpcy5zdGFjay5wdXNoKGl0ZW0pO1xuICB9XG5cbiAgcG9wKCk6IE9wdGlvbjxUPiB7XG4gICAgbGV0IGl0ZW0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIGxldCBsZW4gPSB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgICB0aGlzLmN1cnJlbnQgPSBsZW4gPT09IDAgPyBudWxsIDogdGhpcy5zdGFja1tsZW4gLSAxXTtcblxuICAgIHJldHVybiBpdGVtID09PSB1bmRlZmluZWQgPyBudWxsIDogaXRlbTtcbiAgfVxuXG4gIG50aChmcm9tOiBudW1iZXIpOiBPcHRpb248VD4ge1xuICAgIGxldCBsZW4gPSB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgICByZXR1cm4gbGVuIDwgZnJvbSA/IG51bGwgOiB0aGlzLnN0YWNrW2xlbiAtIGZyb21dO1xuICB9XG5cbiAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjay5sZW5ndGggPT09IDA7XG4gIH1cblxuICB0b0FycmF5KCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2s7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=