@cucumber/gherkin
Version:
Gherkin parser
30 lines • 3.66 kB
JavaScript
export default class AstNode {
ruleType;
// biome-ignore lint/suspicious/noExplicitAny: keys and values are heterogeneous AST entries
subItems = new Map();
constructor(ruleType) {
this.ruleType = ruleType;
}
// biome-ignore lint/suspicious/noExplicitAny: keys and values are heterogeneous AST entries
add(type, obj) {
let items = this.subItems.get(type);
if (items === undefined) {
items = [];
this.subItems.set(type, items);
}
items.push(obj);
}
getSingle(ruleType) {
return (this.subItems.get(ruleType) || [])[0];
}
getItems(ruleType) {
return this.subItems.get(ruleType) || [];
}
getToken(tokenType) {
return (this.subItems.get(tokenType) || [])[0];
}
getTokens(tokenType) {
return this.subItems.get(tokenType) || [];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXN0Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Bc3ROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxPQUFPLE9BQU8sT0FBTztJQUlFLFFBQVE7SUFIcEMsNEZBQTRGO0lBQzNFLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBYyxDQUFBO0lBRWpELFlBQTRCLFFBQWtCO3dCQUFsQixRQUFRO0lBQWEsQ0FBQztJQUVsRCw0RkFBNEY7SUFDckYsR0FBRyxDQUFDLElBQVMsRUFBRSxHQUFRO1FBQzVCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLEtBQUssR0FBRyxFQUFFLENBQUE7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxRQUFrQjtRQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFrQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQyxDQUFDO0lBRU0sUUFBUSxDQUFDLFNBQW9CO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRU0sU0FBUyxDQUFDLFNBQW9CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIElUb2tlbiBmcm9tICcuL0lUb2tlbi5qcydcbmltcG9ydCB0eXBlIHsgUnVsZVR5cGUsIFRva2VuVHlwZSB9IGZyb20gJy4vUGFyc2VyLmpzJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3ROb2RlIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBrZXlzIGFuZCB2YWx1ZXMgYXJlIGhldGVyb2dlbmVvdXMgQVNUIGVudHJpZXNcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJJdGVtcyA9IG5ldyBNYXA8YW55LCBhbnlbXT4oKVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBydWxlVHlwZTogUnVsZVR5cGUpIHt9XG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBrZXlzIGFuZCB2YWx1ZXMgYXJlIGhldGVyb2dlbmVvdXMgQVNUIGVudHJpZXNcbiAgcHVibGljIGFkZCh0eXBlOiBhbnksIG9iajogYW55KSB7XG4gICAgbGV0IGl0ZW1zID0gdGhpcy5zdWJJdGVtcy5nZXQodHlwZSlcbiAgICBpZiAoaXRlbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaXRlbXMgPSBbXVxuICAgICAgdGhpcy5zdWJJdGVtcy5zZXQodHlwZSwgaXRlbXMpXG4gICAgfVxuICAgIGl0ZW1zLnB1c2gob2JqKVxuICB9XG5cbiAgcHVibGljIGdldFNpbmdsZShydWxlVHlwZTogUnVsZVR5cGUpIHtcbiAgICByZXR1cm4gKHRoaXMuc3ViSXRlbXMuZ2V0KHJ1bGVUeXBlKSB8fCBbXSlbMF1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtcyhydWxlVHlwZTogUnVsZVR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJJdGVtcy5nZXQocnVsZVR5cGUpIHx8IFtdXG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW4odG9rZW5UeXBlOiBUb2tlblR5cGUpIHtcbiAgICByZXR1cm4gKHRoaXMuc3ViSXRlbXMuZ2V0KHRva2VuVHlwZSkgfHwgW10pWzBdXG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5zKHRva2VuVHlwZTogVG9rZW5UeXBlKTogSVRva2VuPFRva2VuVHlwZT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViSXRlbXMuZ2V0KHRva2VuVHlwZSkgfHwgW11cbiAgfVxufVxuIl19