node-ejs-renderer/node_modules/@jsonjoy.com/json-pack/lib/ion/Import.js
2024-06-09 13:55:01 -04:00

48 lines
1.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Import = void 0;
const ast_1 = require("./ast");
class Import {
constructor(parent, symbols) {
this.parent = parent;
this.symbols = symbols;
this.byText = new Map();
this.offset = parent ? parent.offset + parent.length : 1;
this.length = symbols.length;
for (let i = 0; i < symbols.length; i++) {
const symbol = symbols[i];
this.byText.set(symbol, this.offset + i);
}
}
getId(symbol) {
const id = this.byText.get(symbol);
if (id !== undefined)
return id;
if (this.parent)
this.parent.getId(symbol);
return undefined;
}
getText(id) {
if (id < this.offset)
return this.parent ? this.parent.getText(id) : undefined;
return this.symbols[id - this.offset];
}
add(symbol) {
let id = this.byText.get(symbol);
if (id !== undefined)
return id;
const length = this.symbols.length;
id = this.offset + length;
this.symbols.push(symbol);
this.length++;
this.byText.set(symbol, id);
return id;
}
toAst() {
const map = new Map();
map.set(7, (0, ast_1.toAst)(this.symbols, this));
return new ast_1.ObjAstNode(map);
}
}
exports.Import = Import;
//# sourceMappingURL=Import.js.map