UNPKG

tell-me-when

Version:
1 lines 4.97 kB
{"version":3,"file":"ParseNode.mjs","names":["ParseNode","name","from","to","children","constructor","arg0","Error","error","empty","index","undefined","substringOf","input","substring","isError","isEmpty","find","predicate","node","findAll","prototype","child"],"sources":["../../src/util/ParseNode.ts"],"sourcesContent":["export class ParseNode {\n name: string | undefined\n from: number\n to: number\n children?: ParseNode[]\n\n constructor(wrapped: ParseNode)\n constructor(\n name: string | undefined,\n from: number,\n to: number,\n children?: ParseNode[]\n )\n constructor(\n arg0: ParseNode | string | undefined,\n from?: number,\n to?: number,\n children?: ParseNode[]\n ) {\n if (arg0 instanceof ParseNode) {\n this.name = arg0.name\n this.from = arg0.from\n this.to = arg0.to\n this.children = arg0.children\n } else {\n if (from == null || to == null) {\n throw new Error(\n `from and to are required if first arg isn't a ParseNode`\n )\n }\n this.name = arg0\n this.from = from\n this.to = to\n this.children = children\n }\n }\n\n static error(from: number, to: number = from) {\n return new ParseNode('⚠', from, to)\n }\n\n static empty(index: number) {\n return new ParseNode(undefined, index, index)\n }\n\n substringOf(input: string) {\n return input.substring(this.from, this.to)\n }\n\n get isError() {\n return this.name === '⚠'\n }\n\n get isEmpty() {\n return this.from === this.to\n }\n\n find<N extends ParseNode>(\n predicate:\n | (abstract new (...args: any[]) => N)\n | (new (...args: any[]) => N)\n | ((node: ParseNode) => node is N)\n ): N | undefined\n find(\n predicate:\n | string\n | (abstract new (...args: any[]) => ParseNode)\n | (new (...args: any[]) => ParseNode)\n | ((node: ParseNode) => boolean)\n ): ParseNode | undefined\n find(\n predicate:\n | string\n | (abstract new (...args: any[]) => ParseNode)\n | (new (...args: any[]) => ParseNode)\n | ((node: ParseNode) => boolean)\n ): ParseNode | undefined {\n for (const node of this.findAll(predicate)) {\n return node\n }\n return undefined\n }\n\n findAll<N extends ParseNode>(\n predicate:\n | (abstract new (...args: any[]) => N)\n | (new (...args: any[]) => N)\n | ((node: ParseNode) => node is N)\n ): Iterable<N>\n findAll(\n predicate:\n | string\n | (abstract new (...args: any[]) => ParseNode)\n | (new (...args: any[]) => ParseNode)\n | ((node: ParseNode) => boolean)\n ): Iterable<ParseNode>\n *findAll(\n predicate:\n | string\n | (abstract new (...args: any[]) => ParseNode)\n | (new (...args: any[]) => ParseNode)\n | ((node: ParseNode) => boolean)\n ): Iterable<ParseNode> {\n if (typeof predicate === 'string') {\n yield* this.findAll((node) => node.name === predicate)\n return\n }\n if (\n predicate.prototype instanceof ParseNode\n ? this instanceof predicate\n : (predicate as any)(this)\n ) {\n yield this\n }\n if (this.children) {\n for (const child of this.children) {\n yield* child.findAll(predicate)\n }\n }\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,SAAS,CAAC;EACrBC,IAAI;EACJC,IAAI;EACJC,EAAE;EACFC,QAAQ;EASRC,WAAWA,CACTC,IAAoC,EACpCJ,IAAa,EACbC,EAAW,EACXC,QAAsB,EACtB;IACA,IAAIE,IAAI,YAAYN,SAAS,EAAE;MAC7B,IAAI,CAACC,IAAI,GAAGK,IAAI,CAACL,IAAI;MACrB,IAAI,CAACC,IAAI,GAAGI,IAAI,CAACJ,IAAI;MACrB,IAAI,CAACC,EAAE,GAAGG,IAAI,CAACH,EAAE;MACjB,IAAI,CAACC,QAAQ,GAAGE,IAAI,CAACF,QAAQ;IAC/B,CAAC,MAAM;MACL,IAAIF,IAAI,IAAI,IAAI,IAAIC,EAAE,IAAI,IAAI,EAAE;QAC9B,MAAM,IAAII,KAAK,CACb,yDACF,CAAC;MACH;MACA,IAAI,CAACN,IAAI,GAAGK,IAAI;MAChB,IAAI,CAACJ,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,EAAE,GAAGA,EAAE;MACZ,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IAC1B;EACF;EAEA,OAAOI,KAAKA,CAACN,IAAY,EAAEC,EAAU,GAAGD,IAAI,EAAE;IAC5C,OAAO,IAAIF,SAAS,CAAC,GAAG,EAAEE,IAAI,EAAEC,EAAE,CAAC;EACrC;EAEA,OAAOM,KAAKA,CAACC,KAAa,EAAE;IAC1B,OAAO,IAAIV,SAAS,CAACW,SAAS,EAAED,KAAK,EAAEA,KAAK,CAAC;EAC/C;EAEAE,WAAWA,CAACC,KAAa,EAAE;IACzB,OAAOA,KAAK,CAACC,SAAS,CAAC,IAAI,CAACZ,IAAI,EAAE,IAAI,CAACC,EAAE,CAAC;EAC5C;EAEA,IAAIY,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACd,IAAI,KAAK,GAAG;EAC1B;EAEA,IAAIe,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACd,IAAI,KAAK,IAAI,CAACC,EAAE;EAC9B;EAeAc,IAAIA,CACFC,SAIkC,EACX;IACvB,KAAK,MAAMC,IAAI,IAAI,IAAI,CAACC,OAAO,CAACF,SAAS,CAAC,EAAE;MAC1C,OAAOC,IAAI;IACb;IACA,OAAOR,SAAS;EAClB;EAeA,CAACS,OAAOA,CACNF,SAIkC,EACb;IACrB,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;MACjC,OAAO,IAAI,CAACE,OAAO,CAAED,IAAI,IAAKA,IAAI,CAAClB,IAAI,KAAKiB,SAAS,CAAC;MACtD;IACF;IACA,IACEA,SAAS,CAACG,SAAS,YAAYrB,SAAS,GACpC,IAAI,YAAYkB,SAAS,GACxBA,SAAS,CAAS,IAAI,CAAC,EAC5B;MACA,MAAM,IAAI;IACZ;IACA,IAAI,IAAI,CAACd,QAAQ,EAAE;MACjB,KAAK,MAAMkB,KAAK,IAAI,IAAI,CAAClB,QAAQ,EAAE;QACjC,OAAOkB,KAAK,CAACF,OAAO,CAACF,SAAS,CAAC;MACjC;IACF;EACF;AACF","ignoreList":[]}