clarity-pattern-parser 4.0.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +466 -1
- package/TODO.md +76 -2
- package/dist/ast/Node.d.ts +49 -11
- package/dist/ast/Visitor.d.ts +31 -31
- package/dist/index.browser.js +1513 -1495
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +17 -17
- package/dist/index.esm.js +1480 -1459
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1481 -1463
- package/dist/index.js.map +1 -1
- package/dist/intellisense/AutoComplete.d.ts +28 -0
- package/dist/intellisense/Suggestion.d.ts +11 -0
- package/dist/intellisense/SuggestionOption.d.ts +4 -0
- package/dist/patterns/And.d.ts +37 -24
- package/dist/patterns/Cursor.d.ts +37 -0
- package/dist/patterns/CursorHistory.d.ts +30 -0
- package/dist/patterns/Literal.d.ts +35 -19
- package/dist/patterns/Not.d.ts +29 -11
- package/dist/patterns/Or.d.ts +33 -22
- package/dist/patterns/ParseError.d.ts +6 -8
- package/dist/patterns/ParseResult.d.ts +6 -0
- package/dist/patterns/Pattern.d.ts +20 -26
- package/dist/patterns/Reference.d.ts +34 -12
- package/dist/patterns/Regex.d.ts +41 -21
- package/dist/patterns/Repeat.d.ts +38 -20
- package/dist/patterns/clonePatterns.d.ts +2 -0
- package/dist/patterns/filterOutNull.d.ts +2 -0
- package/dist/patterns/findPattern.d.ts +2 -0
- package/dist/patterns/getNextPattern.d.ts +2 -0
- package/jest.config.js +2 -1
- package/package.json +4 -5
- package/rollup.config.js +1 -1
- package/src/ast/Node.test.ts +364 -0
- package/src/ast/Node.ts +237 -23
- package/src/index.ts +25 -27
- package/src/intellisense/AutoComplete.test.ts +150 -0
- package/src/intellisense/AutoComplete.ts +200 -0
- package/src/intellisense/Suggestion.ts +12 -0
- package/src/intellisense/SuggestionOption.ts +4 -0
- package/src/{tests/cssPatterns → intellisense/css}/cssValue.ts +1 -1
- package/src/{tests/cssPatterns → intellisense/css}/divider.ts +2 -1
- package/src/intellisense/css/hex.ts +6 -0
- package/src/{tests/cssPatterns → intellisense/css}/method.ts +8 -9
- package/src/intellisense/css/name.ts +5 -0
- package/src/{tests/javascriptPatterns → intellisense/css}/number.ts +3 -3
- package/src/intellisense/css/spaces.ts +6 -0
- package/src/intellisense/css/unit.ts +10 -0
- package/src/{tests/cssPatterns → intellisense/css}/value.ts +1 -1
- package/src/{tests/cssPatterns → intellisense/css}/values.ts +1 -1
- package/src/intellisense/javascript/Javascript.test.ts +203 -0
- package/src/intellisense/javascript/arrayLiteral.ts +25 -0
- package/src/intellisense/javascript/deleteStatement.ts +14 -0
- package/src/intellisense/javascript/escapedCharacter.ts +49 -0
- package/src/intellisense/javascript/exponent.ts +24 -0
- package/src/intellisense/javascript/expression.ts +87 -0
- package/src/intellisense/javascript/expressionStatement.ts +29 -0
- package/src/intellisense/javascript/fraction.ts +11 -0
- package/src/intellisense/javascript/infixOperator.ts +36 -0
- package/src/intellisense/javascript/integer.ts +7 -0
- package/src/intellisense/javascript/invocation.ts +28 -0
- package/src/intellisense/javascript/literal.ts +14 -0
- package/src/intellisense/javascript/name.ts +3 -0
- package/src/intellisense/javascript/numberLiteral.ts +10 -0
- package/src/intellisense/javascript/objectLiteral.ts +30 -0
- package/src/intellisense/javascript/optionalSpaces.ts +3 -0
- package/src/intellisense/javascript/parameters.ts +20 -0
- package/src/intellisense/javascript/prefixOperator.ts +13 -0
- package/src/intellisense/javascript/propertyAccess.ts +23 -0
- package/src/intellisense/javascript/stringLiteral.ts +28 -0
- package/src/patterns/And.test.ts +310 -0
- package/src/patterns/And.ts +244 -119
- package/src/patterns/Cursor.test.ts +93 -0
- package/src/patterns/Cursor.ts +133 -0
- package/src/patterns/CursorHistory.test.ts +54 -0
- package/src/patterns/CursorHistory.ts +95 -0
- package/src/patterns/Literal.test.ts +166 -0
- package/src/patterns/Literal.ts +141 -62
- package/src/patterns/Not.test.ts +168 -0
- package/src/patterns/Not.ts +113 -32
- package/src/patterns/Or.test.ts +209 -0
- package/src/patterns/Or.ts +128 -97
- package/src/patterns/ParseError.ts +3 -7
- package/src/patterns/ParseResult.ts +7 -0
- package/src/patterns/Pattern.ts +21 -150
- package/src/patterns/Reference.test.ts +193 -0
- package/src/patterns/Reference.ts +114 -88
- package/src/patterns/Regex.test.ts +133 -0
- package/src/patterns/Regex.ts +117 -60
- package/src/patterns/Repeat.test.ts +218 -0
- package/src/patterns/Repeat.ts +220 -103
- package/src/patterns/clonePatterns.ts +5 -0
- package/src/patterns/filterOutNull.ts +13 -0
- package/src/patterns/findPattern.ts +25 -0
- package/src/Cursor.ts +0 -141
- package/src/CursorHistory.ts +0 -146
- package/src/TextSuggester.ts +0 -317
- package/src/ast/Visitor.ts +0 -271
- package/src/patterns/LookAhead.ts +0 -32
- package/src/patterns/Recursive.ts +0 -92
- package/src/tests/And.test.ts +0 -180
- package/src/tests/ComplexExamples.test.ts +0 -86
- package/src/tests/CssPatterns.test.ts +0 -90
- package/src/tests/CursorHistory.test.ts +0 -107
- package/src/tests/Cusor.test.ts +0 -174
- package/src/tests/HtmlPatterns.test.ts +0 -34
- package/src/tests/Literal.test.ts +0 -79
- package/src/tests/LookAhead.test.ts +0 -44
- package/src/tests/Not.test.ts +0 -51
- package/src/tests/Or.test.ts +0 -113
- package/src/tests/Pattern.test.ts +0 -290
- package/src/tests/Recursive.test.ts +0 -64
- package/src/tests/Reference.test.ts +0 -16
- package/src/tests/Repeat.test.ts +0 -75
- package/src/tests/SpeedTest.test.ts +0 -31
- package/src/tests/TextSuggester.test.ts +0 -297
- package/src/tests/Visitor.test.ts +0 -331
- package/src/tests/cssPatterns/hex.ts +0 -5
- package/src/tests/cssPatterns/name.ts +0 -5
- package/src/tests/cssPatterns/number.ts +0 -8
- package/src/tests/cssPatterns/spaces.ts +0 -5
- package/src/tests/cssPatterns/unit.ts +0 -8
- package/src/tests/htmlPatterns/element.ts +0 -49
- package/src/tests/javascriptPatterns/boolean.ts +0 -10
- package/src/tests/javascriptPatterns/json.ts +0 -67
- package/src/tests/javascriptPatterns/name.ts +0 -5
- package/src/tests/javascriptPatterns/objectLiteral.ts +0 -40
- package/src/tests/javascriptPatterns/string.ts +0 -84
- package/src/tests/javascriptPatterns/unit.ts +0 -8
- package/src/tests/javascriptPatterns/whitespace.ts +0 -44
- package/src/tests/naturalLanguage/filter.ts +0 -37
- package/src/tests/patterns/sentence.ts +0 -37
- /package/src/{tests/cssPatterns → intellisense/css}/optionalSpaces.ts +0 -0
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/ast/Node.ts","../src/CursorHistory.ts","../src/Cursor.ts","../src/patterns/ParseError.ts","../src/patterns/Pattern.ts","../src/patterns/Regex.ts","../src/patterns/And.ts","../src/patterns/Literal.ts","../src/patterns/LookAhead.ts","../src/patterns/Not.ts","../src/patterns/Or.ts","../src/patterns/Repeat.ts","../src/patterns/Recursive.ts","../src/patterns/Reference.ts","../src/ast/Visitor.ts","../src/TextSuggester.ts"],"sourcesContent":["export default class Node {\n public type: string;\n public name: string;\n public startIndex: number;\n public endIndex: number;\n public children: Node[];\n public value: string;\n\n constructor(\n type: string,\n name: string,\n startIndex: number,\n endIndex: number,\n children: Node[] = [],\n value: string = \"\"\n ) {\n this.type = type;\n this.name = name;\n this.startIndex = startIndex;\n this.endIndex = endIndex;\n this.children = children;\n this.value = value;\n }\n\n clone(): Node {\n return new Node(\n this.type,\n this.name,\n this.startIndex,\n this.endIndex,\n this.children.map((c) => c.clone()),\n this.value\n );\n }\n\n toString() {\n return this.value;\n }\n}\n","import Pattern from \"./patterns/Pattern\";\nimport Node from \"./ast/Node\";\nimport ParseError from \"./patterns/ParseError\";\n\nexport interface Match {\n pattern: Pattern | null;\n astNode: Node | null;\n}\n\nexport default class CursorHistory {\n public isRecording: boolean;\n public furthestMatch: Match;\n public furthestError: ParseError | null;\n public patterns: Pattern[];\n public astNodes: Node[];\n public errors: ParseError[];\n\n constructor() {\n this.isRecording = false;\n\n this.furthestMatch = {\n pattern: null,\n astNode: null,\n };\n\n this.furthestError = null;\n\n this.patterns = [];\n this.astNodes = [];\n this.errors = [];\n }\n\n addMatch(pattern: Pattern, astNode: Node) {\n if (this.isRecording) {\n this.patterns.push(pattern);\n this.astNodes.push(astNode);\n }\n\n if (\n this.furthestMatch.astNode == null ||\n astNode.endIndex >= this.furthestMatch.astNode.endIndex\n ) {\n this.furthestMatch.pattern = pattern;\n this.furthestMatch.astNode = astNode;\n }\n }\n\n addError(error: ParseError) {\n if (this.isRecording) {\n this.errors.push(error);\n }\n\n if (this.furthestError == null || error.index >= this.furthestError.index) {\n this.furthestError = error;\n }\n }\n\n startRecording() {\n this.isRecording = true;\n }\n\n stopRecording() {\n this.isRecording = false;\n this.clear();\n }\n\n clear() {\n this.patterns.length = 0;\n this.astNodes.length = 0;\n this.errors.length = 0;\n }\n\n getFurthestError() {\n return this.furthestError;\n }\n\n getFurthestMatch() {\n return this.furthestMatch;\n }\n\n getLastMatch() {\n if (this.isRecording) {\n return {\n pattern: this.patterns[this.patterns.length - 1] || null,\n astNode: this.astNodes[this.astNodes.length - 1] || null,\n } as Match;\n } else {\n return this.furthestMatch as Match;\n }\n }\n\n getLastError() {\n return this.errors[this.errors.length - 1] || null;\n }\n\n getAllParseStacks() {\n const stacks = this.astNodes.reduce((acc: Node[][], node) => {\n let container: Node[] = acc[acc.length - 1];\n\n if (node.startIndex === 0) {\n container = [];\n acc.push(container);\n }\n\n container.push(node);\n\n return acc;\n }, []);\n\n // There are times when the matching will fail and hit again on the same node.\n // This filters them out.\n // We simply check to see if there is any overlap with the previous one,\n // and if there is we don't add it. This is why we move backwards.\n const cleanedStack = stacks.map((stack: Node[]) => {\n const cleanedStack = [];\n\n for (let x = stack.length - 1; x >= 0; x--) {\n const currentNode = stack[x];\n const previousNode = stack[x + 1];\n\n if (previousNode == null) {\n cleanedStack.unshift(currentNode);\n } else {\n const left = Math.max(\n currentNode.startIndex,\n previousNode.startIndex\n );\n const right = Math.min(currentNode.endIndex, previousNode.endIndex);\n const isOverlapping = left <= right;\n\n if (!isOverlapping) {\n cleanedStack.unshift(currentNode);\n }\n }\n }\n return cleanedStack;\n });\n\n return cleanedStack;\n }\n\n getLastParseStack(): Node[] {\n const stacks = this.getAllParseStacks();\n return stacks[stacks.length - 1] || [];\n }\n}\n","import Pattern from \"./patterns/Pattern\";\nimport Node from \"./ast/Node\";\nimport CursorHistory from \"./CursorHistory\";\nimport ParseError from \"./patterns/ParseError\";\n\nexport default class Cursor {\n public text: string;\n public index: number;\n public length: number;\n public history: CursorHistory;\n public isInErrorState: boolean;\n\n constructor(text: string) {\n this.text = text;\n this.assertValidity();\n\n this.index = 0;\n this.length = text.length;\n this.history = new CursorHistory();\n this.isInErrorState = false;\n }\n\n assertValidity() {\n if (this.isNullOrEmpty(this.text)) {\n throw new Error(\n \"Illegal Argument: Cursor needs to have a string that has a length greater than 0.\"\n );\n }\n }\n\n startRecording() {\n this.history.startRecording();\n }\n\n stopRecording() {\n this.history.stopRecording();\n }\n\n get parseError() {\n return this.history.getFurthestError();\n }\n\n get lastMatch() {\n return this.history.getFurthestMatch();\n }\n\n throwError(parseError: ParseError) {\n this.isInErrorState = true;\n this.history.addError(parseError);\n }\n\n addMatch(pattern: Pattern, astNode: Node) {\n this.history.addMatch(pattern, astNode);\n }\n\n resolveError() {\n this.isInErrorState = false;\n }\n\n hasUnresolvedError() {\n return this.isInErrorState;\n }\n\n isNullOrEmpty(value: string | null) {\n return value == null || (typeof value === \"string\" && value.length === 0);\n }\n\n hasNext() {\n return this.index + 1 < this.text.length;\n }\n\n hasPrevious() {\n return this.index - 1 >= 0;\n }\n\n next() {\n if (this.hasNext()) {\n this.index++;\n } else {\n throw new Error(\"Cursor: Out of Bounds Exception.\");\n }\n }\n\n previous() {\n if (this.hasPrevious()) {\n this.index--;\n } else {\n throw new Error(\"Cursor: Out of Bounds Exception.\");\n }\n }\n\n mark() {\n return this.index;\n }\n\n moveToMark(mark: number) {\n this.index = mark;\n }\n\n moveToBeginning() {\n this.index = 0;\n }\n\n moveToEnd() {\n this.index = this.text.length - 1;\n }\n\n getChar() {\n return this.text.charAt(this.index);\n }\n\n getIndex() {\n return this.index;\n }\n\n setIndex(index: number) {\n if (typeof index === \"number\") {\n if (index < 0 || index > this.lastIndex()) {\n throw new Error(\"Cursor: Out of Bounds Exception.\");\n }\n\n this.index = index;\n }\n }\n\n isAtBeginning() {\n return this.index === 0;\n }\n\n isAtEnd() {\n return this.index === this.text.length - 1;\n }\n\n lastIndex() {\n return this.length - 1;\n }\n\n didSuccessfullyParse() {\n return !this.hasUnresolvedError() && this.isAtEnd();\n }\n}\n","import Pattern from \"./Pattern\";\n\nexport default class ParseError {\n public message: string;\n public name: string;\n public index: number;\n public pattern: Pattern;\n\n constructor(message: string, index: number, pattern: Pattern) {\n this.name = \"ParseError\";\n this.message = message;\n this.index = index;\n this.pattern = pattern;\n }\n}\n","import Cursor from \"../Cursor\";\nimport Node from \"../ast/Node\";\n\nexport default abstract class Pattern {\n protected _type: string;\n protected _name: string;\n protected _children: Pattern[];\n protected _parent: Pattern | null;\n protected _isOptional = false;\n\n get isOptional() {\n return this._isOptional;\n }\n\n constructor(\n type: string,\n name: string,\n children: Pattern[] = [],\n isOptional = false\n ) {\n this._type = type;\n this._name = name;\n this._children = [];\n this._parent = null;\n this._isOptional = isOptional;\n this.children = children;\n }\n\n abstract parse(cursor: Cursor): Node | null;\n\n exec(text: string) {\n const cursor = new Cursor(text);\n const node = this.parse(cursor);\n\n if (cursor.didSuccessfullyParse()) {\n return node;\n } else {\n return null;\n }\n }\n\n test(text: string) {\n return this.exec(text) != null;\n }\n\n get name() {\n return this._name;\n }\n\n get type() {\n return this._type;\n }\n\n get parent() {\n return this._parent;\n }\n\n set parent(value: Pattern | null) {\n this._parent = value;\n }\n\n get children() {\n return this._children;\n }\n\n set children(value) {\n this._children = value;\n this.cloneChildren();\n this.assignAsParent();\n }\n\n abstract clone(name?: string): Pattern;\n abstract getTokens(): string[];\n\n getTokenValue(): string | null {\n return null;\n }\n\n getNextTokens(): string[] {\n const parent = this._parent;\n\n if (parent != null) {\n const siblings = parent.children;\n const index = siblings.findIndex((c) => c === this);\n const nextSibling = siblings[index + 1];\n\n // I don't like this, so I think we need to rethink this.\n if (parent.type.indexOf(\"repeat\") === 0) {\n const tokens = parent.getNextTokens();\n if (index === 0 && siblings.length > 1) {\n return nextSibling.getTokens().concat(tokens);\n } else if (index === 1) {\n return siblings[0].getTokens();\n } else {\n return this.getTokens().concat(tokens);\n }\n }\n\n // Another thing I don't like.\n if (\n this._parent?.type?.indexOf(\"and\") === 0 &&\n nextSibling != null &&\n nextSibling.isOptional\n ) {\n let tokens: string[] = [];\n\n for (let x = index + 1; x < siblings.length; x++) {\n const child = siblings[x];\n\n if (child.isOptional) {\n tokens = tokens.concat(child.getTokens());\n } else {\n tokens = tokens.concat(child.getTokens());\n break;\n }\n\n if (x === siblings.length - 1) {\n tokens = tokens.concat(this._parent.getNextTokens());\n }\n }\n\n return tokens;\n }\n\n // If you are an or you have already qualified.\n if (parent.type.indexOf(\"or\") === 0) {\n return parent.getNextTokens();\n }\n\n if (nextSibling != null) {\n return nextSibling.getTokens();\n } else {\n return parent.getNextTokens();\n }\n }\n\n return [];\n }\n\n private cloneChildren() {\n this._children = this._children.map((pattern) => {\n return pattern.clone();\n });\n\n Object.freeze(this._children);\n }\n\n private assignAsParent() {\n this._children.forEach((child) => (child.parent = this));\n }\n}\n","import ParseError from \"./ParseError\";\nimport Node from \"../ast/Node\";\nimport Pattern from \"./Pattern\";\nimport Cursor from \"../Cursor\";\n\nexport default class Regex extends Pattern {\n private regexString: string;\n private regex: RegExp;\n private node: Node | null = null;\n private cursor: Cursor | null = null;\n private substring: string = \"\";\n\n constructor(name: string, regex: string, isOptional = false) {\n super(\"regex\", name, [], isOptional);\n this.regexString = regex;\n this.regex = new RegExp(`^${regex}`, \"g\");\n this.assertArguments();\n }\n\n private assertArguments() {\n if (this.regexString.length < 1) {\n throw new Error(\n \"Invalid Arguments: The regex string argument needs to be at least one character long.\"\n );\n }\n\n if (this.regexString.charAt(0) === \"^\") {\n throw new Error(\n \"Invalid Arguments: The regex string cannot start with a '^' because it is expected to be in the middle of a string.\"\n );\n }\n\n if (this.regexString.charAt(this.regexString.length - 1) === \"$\") {\n throw new Error(\n \"Invalid Arguments: The regex string cannot end with a '$' because it is expected to be in the middle of a string.\"\n );\n }\n }\n\n parse(cursor: Cursor) {\n this.resetState(cursor);\n this.tryToParse();\n\n return this.node;\n }\n\n private resetState(cursor: Cursor) {\n this.cursor = cursor;\n this.regex.lastIndex = 0;\n this.substring = this.cursor.text.substr(this.cursor.getIndex());\n this.node = null;\n }\n\n private tryToParse() {\n const result = this.regex.exec(this.substring);\n\n if (result != null && result.index === 0) {\n this.processResult(result);\n } else {\n this.processError();\n }\n }\n\n private processResult(result: RegExpExecArray) {\n const cursor = this.safelyGetCursor();\n const currentIndex = cursor.getIndex();\n const newIndex = currentIndex + result[0].length - 1;\n\n this.node = new Node(\n \"regex\",\n this.name,\n currentIndex,\n newIndex,\n [],\n result[0]\n );\n\n cursor.moveToMark(newIndex);\n cursor.addMatch(this, this.node);\n }\n\n private processError() {\n const cursor = this.safelyGetCursor();\n\n if (!this._isOptional) {\n const message = `ParseError: Expected regex pattern of '${this.regexString}' but found '${this.substring}'.`;\n const parseError = new ParseError(message, cursor.getIndex(), this);\n\n cursor.throwError(parseError);\n }\n\n this.node = null;\n }\n\n private safelyGetCursor() {\n const cursor = this.cursor;\n\n if (cursor == null) {\n throw new Error(\"Couldn't find cursor.\");\n }\n return cursor;\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n\n return new Regex(name, this.regexString, isOptional);\n }\n\n getTokenValue() {\n return this.name;\n }\n\n getTokens() {\n return [this.name];\n }\n}","import ParseError from \"../patterns/ParseError\";\nimport Cursor from \"../Cursor\";\nimport Pattern from \"./Pattern\";\nimport Node from \"../ast/Node\";\n\nexport default class And extends Pattern {\n public onPatternIndex: number = 0;\n public nodes: (Node | null)[] = [];\n public node: Node | null = null;\n public cursor: Cursor | null = null;\n public mark: number = 0;\n\n constructor(name: string, patterns: Pattern[], isOptional = false) {\n super(\"and\", name, patterns, isOptional);\n }\n\n parse(cursor: Cursor) {\n this.resetState(cursor);\n this.tryToParse();\n\n return this.node;\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null){\n isOptional = this._isOptional;\n }\n\n return new And(name, this._children, isOptional);\n }\n\n getTokens() {\n let tokens: string[] = [];\n\n for (let x = 0; x < this._children.length; x++) {\n const child = this._children[x];\n\n if (child.isOptional) {\n tokens = tokens.concat(child.getTokens());\n } else {\n tokens = tokens.concat(child.getTokens());\n break;\n }\n }\n\n return tokens;\n }\n\n private resetState(cursor: Cursor) {\n this.onPatternIndex = 0;\n this.nodes = [];\n this.node = null;\n this.cursor = cursor;\n this.mark = this.cursor.mark();\n }\n\n private tryToParse() {\n const cursor = this.safelyGetCursor();\n\n while (true) {\n const pattern = this._children[this.onPatternIndex];\n const node = pattern.parse(cursor);\n\n if (cursor.hasUnresolvedError()) {\n this.processError();\n break;\n } else {\n this.nodes.push(node);\n }\n\n if (!this.shouldProceed()) {\n this.processResult();\n break;\n }\n }\n }\n\n private safelyGetCursor() {\n const cursor = this.cursor;\n\n if (cursor == null) {\n throw new Error(\"Couldn't find cursor.\");\n }\n return cursor;\n }\n\n private processResult() {\n const cursor = this.safelyGetCursor();\n\n if (cursor.hasUnresolvedError()) {\n this.processError();\n } else {\n this.processSuccess();\n }\n }\n\n private processError() {\n const cursor = this.safelyGetCursor();\n\n if (this.isOptional) {\n cursor.moveToMark(this.mark);\n cursor.resolveError();\n }\n this.node = null;\n }\n\n private shouldProceed() {\n const cursor = this.safelyGetCursor();\n\n if (this.hasMorePatterns()) {\n const lastNode = this.nodes[this.nodes.length - 1];\n const wasOptional = lastNode == null;\n\n if (cursor.hasNext()) {\n if (!wasOptional) {\n cursor.next();\n }\n\n this.onPatternIndex++;\n return true;\n } else if (wasOptional) {\n this.onPatternIndex++;\n return true;\n }\n\n this.assertRestOfPatternsAreOptional();\n return false;\n } else {\n return false;\n }\n }\n\n private hasMorePatterns() {\n return this.onPatternIndex + 1 < this._children.length;\n }\n\n private assertRestOfPatternsAreOptional() {\n const cursor = this.safelyGetCursor();\n const areTheRestOptional = this.areTheRemainingPatternsOptional();\n\n if (!areTheRestOptional) {\n const parseError = new ParseError(\n `Could not match ${this.name} before string ran out.`,\n this.onPatternIndex,\n this\n );\n\n cursor.throwError(parseError);\n }\n }\n\n private areTheRemainingPatternsOptional() {\n return this.children\n .slice(this.onPatternIndex + 1)\n .map((p) => p.isOptional)\n .every((r) => r);\n }\n\n private processSuccess() {\n const cursor = this.safelyGetCursor();\n const nodes = this.nodes.filter((node) => node != null) as Node[];\n this.nodes = nodes;\n\n const lastNode = nodes[this.nodes.length - 1];\n const startIndex = this.mark;\n const endIndex = lastNode.endIndex;\n const value = nodes.map((node) => node.value).join(\"\");\n\n this.node = new Node(\"and\", this.name, startIndex, endIndex, nodes, value);\n\n cursor.index = this.node.endIndex;\n cursor.addMatch(this, this.node);\n }\n}\n","import ParseError from \"./ParseError\";\nimport Node from \"../ast/Node\";\nimport Pattern from \"./Pattern\";\nimport Cursor from \"../Cursor\";\n\nexport default class Literal extends Pattern {\n public literal: string;\n public node: Node | null = null;\n public cursor!: Cursor;\n public mark: number = 0;\n public substring: string = \"\";\n\n constructor(name: string, literal: string, isOptional = false) {\n super(\"literal\", name, [], isOptional);\n this.literal = literal;\n this.assertArguments();\n }\n\n parse(cursor: Cursor) {\n this.resetState(cursor);\n this.tryToParse();\n\n return this.node;\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n \n return new Literal(name, this.literal, isOptional);\n }\n\n getTokens() {\n return [this.literal];\n }\n\n private assertArguments() {\n if (this.literal.length < 1) {\n throw new Error(\n \"Invalid Arguments: The `literal` argument needs to be at least one character long.\"\n );\n }\n }\n\n private resetState(cursor: Cursor) {\n this.cursor = cursor;\n this.mark = this.cursor.mark();\n this.substring = this.cursor.text.substring(\n this.mark,\n this.mark + this.literal.length\n );\n this.node = null;\n }\n\n private tryToParse() {\n if (this.substring === this.literal) {\n this.processResult();\n } else {\n this.processError();\n }\n }\n\n private processError() {\n this.node = null;\n\n if (!this._isOptional) {\n const message = `ParseError: Expected '${this.literal}' but found '${this.substring}'.`;\n const parseError = new ParseError(message, this.cursor.getIndex(), this);\n this.cursor.throwError(parseError);\n }\n }\n\n private processResult() {\n this.node = new Node(\n \"literal\",\n this.name,\n this.mark,\n this.mark + this.literal.length - 1,\n [],\n this.substring\n );\n\n this.cursor.index = this.node.endIndex;\n this.cursor.addMatch(this, this.node);\n }\n}\n","import Cursor from \"../Cursor\";\nimport ParseError from \"./ParseError\";\nimport Pattern from \"./Pattern\";\n\nexport default class LookAhead extends Pattern {\n constructor(pattern: Pattern) {\n super(\"look-ahead\", \"look-ahead\", [pattern]);\n }\n\n parse(cursor: Cursor) {\n const mark = cursor.mark();\n const node = this.children[0].parse(cursor);\n\n if (cursor.hasUnresolvedError() || node == null) {\n cursor.resolveError();\n cursor.throwError(\n new ParseError(\"Couldn't find look ahead pattern.\", mark, this.children[0])\n );\n cursor.moveToMark(mark);\n }\n\n return null;\n }\n\n clone() {\n return new LookAhead(this.children[0].clone());\n }\n\n getTokens() {\n return [];\n }\n}\n","import Pattern from \"./Pattern\";\nimport ParseError from \"./ParseError\";\nimport Cursor from \"../Cursor\";\n\nexport default class Not extends Pattern {\n public cursor!: Cursor;\n public mark: number = 0;\n\n constructor(pattern: Pattern) {\n super(\"not\", `not-${pattern.name}`, [pattern]);\n this._isOptional = true;\n }\n\n parse(cursor: Cursor) {\n this.cursor = cursor;\n this.mark = cursor.mark();\n this.tryToParse();\n return null;\n }\n\n private tryToParse() {\n const mark = this.cursor.mark();\n this.children[0].parse(this.cursor);\n\n if (this.cursor.hasUnresolvedError()) {\n this.cursor.resolveError();\n this.cursor.moveToMark(mark);\n } else {\n this.cursor.moveToMark(mark);\n const parseError = new ParseError(\n `Match invalid pattern: ${this.children[0].name}.`,\n this.mark,\n this\n );\n this.cursor.throwError(parseError);\n }\n }\n\n clone(name?: string) {\n if (name == null) {\n name = this.name;\n }\n\n return new Not(this.children[0]);\n }\n\n getTokens() {\n return [];\n }\n}\n","import Pattern from \"./Pattern\";\nimport ParseError from \"./ParseError\";\nimport Cursor from \"../Cursor\";\nimport Node from \"../ast/Node\";\n\nexport default class Or extends Pattern {\n public patternIndex: number = 0;\n public errors: ParseError[] = [];\n public node: Node | null = null;\n public cursor: Cursor | null = null;\n public mark: number = 0;\n public parseError: ParseError | null = null;\n\n constructor(name: string, patterns: Pattern[], isOptional = false) {\n super(\"or\", name, patterns, isOptional);\n this.assertArguments();\n }\n\n private assertArguments() {\n if (this._children.length < 2) {\n throw new Error(\n \"Invalid Argument: OrValue needs to have more than one value pattern.\"\n );\n }\n\n const hasOptionalChildren = this._children.some(\n (pattern) => pattern.isOptional\n );\n\n if (hasOptionalChildren) {\n throw new Error(\"OrValues cannot have optional patterns.\");\n }\n }\n\n private resetState(cursor: Cursor) {\n this.patternIndex = 0;\n this.errors = [];\n this.node = null;\n this.cursor = cursor;\n this.mark = cursor.mark();\n }\n\n private safelyGetCursor() {\n const cursor = this.cursor;\n\n if (cursor == null) {\n throw new Error(\"Couldn't find cursor.\");\n }\n return cursor;\n }\n\n parse(cursor: Cursor) {\n this.resetState(cursor);\n this.tryToParse();\n\n return this.node;\n }\n\n private tryToParse() {\n const cursor = this.safelyGetCursor();\n\n while (true) {\n const pattern = this._children[this.patternIndex];\n const node = pattern.parse(cursor);\n const hasError = cursor.hasUnresolvedError();\n\n if (hasError) {\n const shouldBreak = this.processError();\n if (shouldBreak) {\n break;\n }\n } else if (node != null) {\n this.processResult(node);\n break;\n }\n }\n }\n\n private processError() {\n const cursor = this.safelyGetCursor();\n const isLastPattern = this.patternIndex + 1 === this._children.length;\n\n if (!isLastPattern) {\n this.patternIndex++;\n cursor.resolveError();\n cursor.moveToMark(this.mark);\n return false;\n } else {\n if (this._isOptional) {\n cursor.resolveError();\n cursor.moveToMark(this.mark);\n }\n this.node = null;\n return true;\n }\n }\n\n private processResult(node: Node) {\n const cursor = this.safelyGetCursor();\n\n this.node = new Node(\n \"or\",\n this.name,\n node.startIndex,\n node.endIndex,\n [node],\n node.value\n );\n\n cursor.index = this.node.endIndex;\n cursor.addMatch(this, this.node);\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n\n return new Or(name, this._children, isOptional);\n }\n\n getTokens() {\n return this._children.reduce<string[]>(\n (acc, c) => acc.concat(c.getTokens()),\n []\n );\n }\n}\n","import Pattern from \"./Pattern\";\nimport Node from \"../ast/Node\";\nimport ParseError from \"./ParseError\";\nimport Cursor from \"../Cursor\";\n\nexport default class Repeat extends Pattern {\n public _pattern: Pattern;\n public _divider: Pattern;\n public nodes: Node[] = [];\n public cursor!: Cursor;\n public mark: number = 0;\n public node: Node | null = null;\n\n constructor(\n name: string,\n pattern: Pattern,\n divider?: Pattern,\n isOptional = false\n ) {\n super(\n \"repeat\",\n name,\n divider != null ? [pattern, divider] : [pattern],\n isOptional\n );\n\n this._pattern = this.children[0];\n this._divider = this.children[1];\n this.assertArguments();\n }\n\n private assertArguments() {\n if (this._pattern.isOptional) {\n throw new Error(\n \"Invalid Arguments: The pattern cannot be a optional pattern.\"\n );\n }\n }\n\n private _reset(cursor: Cursor) {\n this.nodes = [];\n this.cursor = cursor;\n this.mark = this.cursor.mark();\n }\n\n parse(cursor: Cursor) {\n this._reset(cursor);\n this.tryToParse();\n\n return this.node;\n }\n\n private tryToParse() {\n const cursor = this.safelyGetCursor();\n\n while (true) {\n const node = this._pattern.parse(cursor);\n\n if (cursor.hasUnresolvedError()) {\n this.processResult();\n break;\n } else if (node != null) {\n this.nodes.push(node);\n\n if (node.endIndex === cursor.lastIndex()) {\n this.processResult();\n break;\n }\n\n cursor.next();\n\n if (this._divider != null) {\n const mark = cursor.mark();\n const node = this._divider.parse(cursor);\n\n if (cursor.hasUnresolvedError()) {\n cursor.moveToMark(mark);\n this.processResult();\n break;\n } else if (node != null) {\n this.nodes.push(node);\n\n if (node.endIndex === cursor.lastIndex()) {\n this.processResult();\n break;\n }\n\n cursor.next();\n }\n }\n }\n }\n }\n\n private processResult() {\n const endsOnDivider = this.nodes.length % 2 === 0;\n const noMatch = this.nodes.length === 0;\n const hasDivider = this._divider != null;\n\n this.cursor.resolveError();\n\n if ((hasDivider && endsOnDivider) || noMatch) {\n if (this._isOptional) {\n this.cursor.moveToMark(this.mark);\n } else {\n const parseError = new ParseError(\n `Did not find a repeating match of ${this.name}.`,\n this.mark,\n this\n );\n this.cursor.throwError(parseError);\n }\n this.node = null;\n } else {\n const value = this.nodes.map((node) => node.value).join(\"\");\n\n this.node = new Node(\n \"repeat\",\n this.name,\n this.nodes[0].startIndex,\n this.nodes[this.nodes.length - 1].endIndex,\n this.nodes,\n value\n );\n\n this.cursor.index = this.node.endIndex;\n this.cursor.addMatch(this, this.node);\n }\n }\n\n private safelyGetCursor() {\n const cursor = this.cursor;\n\n if (cursor == null) {\n throw new Error(\"Couldn't find cursor.\");\n }\n return cursor;\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n\n return new Repeat(name, this._pattern, this._divider, isOptional);\n }\n\n getTokens() {\n return this._pattern.getTokens();\n }\n}\n","import Pattern from \"./Pattern\";\nimport ParserError from \"./ParseError\";\nimport Cursor from \"../Cursor\";\n\nexport default class Recursive extends Pattern {\n public isRecursing: boolean;\n public pattern: Pattern | null = null;\n\n constructor(name: string, isOptional = false) {\n super(\"recursive\", name, [], isOptional);\n this.isRecursing = false;\n }\n\n getPattern() {\n return this.climb(this.parent, (pattern: Pattern | null) => {\n if (pattern == null) {\n return false;\n }\n return (\n pattern.type !== \"recursive\" &&\n pattern.name === this.name\n );\n });\n }\n\n private climb(\n pattern: Pattern | null,\n isMatch: (pattern: Pattern | null) => boolean\n ): Pattern | null {\n if (isMatch(pattern)) {\n return pattern;\n } else {\n if (pattern && pattern.parent != null) {\n return this.climb(pattern.parent, isMatch);\n }\n return null;\n }\n }\n\n parse(cursor: Cursor) {\n if (this.pattern == null) {\n const pattern = this.getPattern();\n\n if (pattern == null) {\n if (!this._isOptional) {\n cursor.throwError(\n new ParserError(\n `Couldn't find parent pattern to recursively parse, with the name ${this.name}.`,\n cursor.index,\n this\n )\n );\n }\n\n return null;\n }\n\n this.pattern = pattern.clone();\n this.pattern.parent = this;\n }\n\n const mark = cursor.mark();\n const node = this.pattern.parse(cursor);\n\n if (!cursor.hasUnresolvedError() && node != null) {\n cursor.addMatch(this, node);\n }\n\n if (cursor.hasUnresolvedError() && this._isOptional) {\n cursor.resolveError();\n cursor.moveToMark(mark);\n }\n\n return node;\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n\n return new Recursive(name, isOptional);\n }\n\n getTokens() {\n return this.getPattern()?.getTokens() || [];\n }\n}\n","import Pattern from \"./Pattern\";\nimport ParserError from \"./ParseError\";\nimport Cursor from \"../Cursor\";\n\nexport default class Reference extends Pattern {\n constructor(name: string, isOptional = false) {\n super(\"reference\", name, [], isOptional);\n }\n\n private getRoot() {\n let node = this.parent;\n while (node != null) {\n if (node.parent == null) {\n return node;\n }\n node = node.parent;\n }\n return node;\n }\n\n private findPattern(): Pattern | null {\n const root = this.getRoot();\n let result: Pattern | null = null;\n\n if (root == null) {\n return null;\n }\n\n this.walkTheTree(root, (pattern) => {\n if (\n pattern.name === this.name &&\n pattern != this &&\n pattern.type != \"reference\"\n ) {\n result = pattern;\n return false;\n }\n return true;\n });\n\n return result;\n }\n\n private walkTheTree(\n pattern: Pattern,\n callback: (pattern: Pattern) => boolean\n ) {\n for (let x = 0; x < pattern.children.length; x++) {\n const p = pattern.children[x];\n const continueWalking = this.walkTheTree(p, callback);\n\n if (!continueWalking) {\n return false;\n }\n }\n\n return callback(pattern);\n }\n\n parse(cursor: Cursor) {\n const mark = cursor.mark();\n\n try {\n const node = this.safelyGetPattern().parse(cursor);\n\n if (!cursor.hasUnresolvedError() && node != null) {\n cursor.addMatch(this, node);\n }\n\n if (cursor.hasUnresolvedError() && this._isOptional) {\n cursor.resolveError();\n cursor.moveToMark(mark);\n }\n\n return node;\n } catch (error) {\n if (this._isOptional) {\n cursor.moveToMark(mark);\n } else {\n cursor.throwError(\n new ParserError(\n `Couldn't find reference pattern to parse, with the name ${this.name}.`,\n cursor.index,\n this as Pattern\n )\n );\n }\n\n return null;\n }\n }\n\n clone(name?: string, isOptional?: boolean) {\n if (name == null) {\n name = this.name;\n }\n\n if (isOptional == null) {\n isOptional = this._isOptional;\n }\n\n return new Reference(name, isOptional);\n }\n\n private safelyGetPattern() {\n let pattern = this.children[0];\n const hasNoPattern = pattern == null;\n\n if (hasNoPattern) {\n const reference = this.findPattern();\n if (reference == null) {\n throw new Error(\n `Couldn't find reference pattern, with the name ${this.name}.`\n );\n }\n\n pattern = reference;\n this.children = [pattern];\n }\n\n return pattern;\n }\n\n getTokens() {\n return this.safelyGetPattern().getTokens();\n }\n}\n","import Node from \"./Node\";\n\nexport default class Visitor {\n public root: Node | null;\n public selectedNodes: Node[];\n\n constructor(root: Node | null = null, selectedNodes: Node[] = []) {\n this.root = root;\n this.selectedNodes = selectedNodes;\n }\n\n flatten() {\n this.selectedNodes.forEach((node) => {\n if (node.children.length > 0) {\n const children: Node[] = [];\n\n Visitor.walkUp(node, (descendant: Node) => {\n if (descendant.children.length === 0) {\n children.push(descendant);\n }\n });\n\n node.children = children;\n }\n });\n\n return this;\n }\n\n remove() {\n if (this.root == null) {\n return this;\n }\n\n this.recursiveRemove(this.root);\n return this;\n }\n\n private recursiveRemove(node: Node) {\n const nodesToRemove = this.selectedNodes;\n for (let x = 0; x < node.children.length; x++) {\n if (nodesToRemove.indexOf(node.children[x]) > -1) {\n node.children.splice(x, 1);\n x--;\n } else {\n this.recursiveRemove(node.children[x]);\n }\n }\n }\n\n wrap(callback: (node: Node) => Node) {\n const visitor = new Visitor(this.root);\n\n visitor.selectRoot().transform((node) => {\n if (this.selectedNodes.includes(node)) {\n return callback(node);\n }\n return node;\n });\n\n return this;\n }\n\n unwrap() {\n if (this.root == null) {\n return this;\n }\n\n Visitor.walkDown(this.root, (node, stack) => {\n if (this.selectedNodes.includes(node)) {\n const parent = stack[stack.length - 1];\n const grandParent = stack[stack.length - 2];\n\n if (parent != null && grandParent != null) {\n const index = grandParent.children.indexOf(parent);\n if (index > -1) {\n grandParent.children.splice(index, 1, ...parent.children);\n }\n }\n }\n });\n\n return this;\n }\n\n prepend(callback: (node: Node) => Node) {\n if (this.root == null) {\n return this;\n }\n\n Visitor.walkUp(this.root, (node, stack) => {\n if (this.selectedNodes.includes(node)) {\n const parent = stack[stack.length - 1];\n\n if (parent != null) {\n const index = parent.children.indexOf(node);\n if (index > -1) {\n parent.children.splice(index, 0, callback(node));\n }\n }\n }\n });\n\n return this;\n }\n\n append(callback: (node: Node) => Node) {\n if (this.root == null) {\n return this;\n }\n\n Visitor.walkDown(this.root, (node, stack) => {\n if (this.selectedNodes.includes(node)) {\n const parent = stack[stack.length - 1];\n\n if (parent != null) {\n const index = parent.children.indexOf(node);\n if (index > -1) {\n parent.children.splice(index + 1, 0, callback(node));\n }\n }\n }\n });\n\n return this;\n }\n\n transform(callback: (node: Node) => Node) {\n this.selectedNodes.forEach((node) => {\n return this.recursiveTransform(node, callback);\n });\n\n return this;\n }\n\n private recursiveTransform(node: Node, callback: (node: Node) => Node) {\n const length = node.children.length;\n\n for (let x = 0; x < length; x++) {\n node.children[x] = this.recursiveTransform(node.children[x], callback);\n }\n\n return callback(node);\n }\n\n selectAll() {\n return this.select((n) => true);\n }\n\n selectNode(node: Node) {\n return new Visitor(this.root, [...this.selectedNodes, node]);\n }\n\n deselectNode(node: Node) {\n const visitor = new Visitor(this.root, this.selectedNodes.slice());\n return visitor.filter((n) => n !== node);\n }\n\n select(callback: (node: Node) => boolean) {\n if (this.root == null) {\n return this;\n }\n\n const node = this.root;\n const selectedNodes: Node[] = [];\n\n if (node.children.length > 0) {\n Visitor.walkDown(node, (descendant: Node) => {\n if (callback(descendant)) {\n selectedNodes.push(descendant);\n }\n });\n }\n\n return new Visitor(this.root, selectedNodes);\n }\n\n forEach(callback: (node: Node) => void) {\n this.selectedNodes.forEach(callback);\n return this;\n }\n\n filter(callback: (node: Node) => boolean) {\n return new Visitor(this.root, this.selectedNodes.filter(callback));\n }\n\n map(callback: (node: Node) => Node) {\n return new Visitor(this.root, this.selectedNodes.map(callback));\n }\n\n selectRoot() {\n if (this.root == null) {\n return this;\n }\n\n return new Visitor(this.root, [this.root]);\n }\n\n first() {\n return this.get(0);\n }\n\n last() {\n return this.get(this.selectedNodes.length - 1);\n }\n\n get(index: number) {\n const node = this.selectedNodes[index];\n\n if (node == null) {\n throw new Error(\n `Couldn't find node at index: ${index}, out of ${this.selectedNodes.length}.`\n );\n }\n\n return new Visitor(node, []);\n }\n\n clear() {\n this.selectedNodes = [];\n return this;\n }\n\n setRoot(root: Node | null) {\n this.root = root;\n return this;\n }\n\n static select(root: Node, callback?: (node: Node) => boolean) {\n if (callback != null) {\n return new Visitor(root).select(callback);\n } else {\n return new Visitor(root);\n }\n }\n\n static walkUp(\n node: Node,\n callback: (node: Node, ancestors: Node[]) => void,\n ancestors: Node[] = []\n ) {\n ancestors.push(node);\n\n if (node.children.length > 0) {\n const children = node.children.slice();\n children.forEach((c) => this.walkUp(c, callback, ancestors));\n }\n\n ancestors.pop();\n callback(node, ancestors);\n\n return this;\n }\n\n static walkDown(\n node: Node,\n callback: (node: Node, ancestors: Node[]) => void,\n ancestors: Node[] = []\n ) {\n callback(node, ancestors);\n ancestors.push(node);\n\n if (node.children.length > 0) {\n const children = node.children.slice();\n children.forEach((c) => this.walkDown(c, callback, ancestors));\n }\n\n ancestors.pop();\n return this;\n }\n}\n","import Node from \"./ast/Node\";\nimport Cursor from \"./Cursor\";\nimport { Match } from \"./CursorHistory\";\nimport Pattern from \"./patterns/Pattern\";\n\nexport interface Token {\n startIndex: number;\n values: string[];\n}\n\nexport interface SuggestionError {\n startIndex: number;\n endIndex: number;\n text: string;\n}\n\nexport interface SuggestionMatch {\n startIndex: number;\n endIndex: number;\n text: string;\n}\n\nexport interface SuggestionResult {\n pattern: Pattern | null;\n astNode: Node | null;\n match: SuggestionMatch | null;\n error: SuggestionError | null;\n options: Token;\n isComplete: boolean;\n parseStack: Node[];\n}\n\nexport default class TextSuggester {\n private cursor: Cursor | null = null;\n private result: Node | null = null;\n private text: string = \"\";\n private match: SuggestionMatch | null = null;\n private error: SuggestionError | null = null;\n private patternMatch: Match | null = null;\n private matchedText: string = \"\";\n private rootPattern: Pattern | null = null;\n private tokens: Token | null = {\n startIndex: 0,\n values: [],\n };\n private options: string[] = [];\n private parseStack: Node[] = [];\n\n suggest(text: string, pattern: Pattern) {\n this.reset();\n\n this.text = text;\n this.rootPattern = pattern;\n\n // If no text all options are available.\n if (text.length === 0) {\n return {\n pattern: null,\n astNode: null,\n match: null,\n error: null,\n options: {\n startIndex: 0,\n values: pattern.getTokens(),\n },\n isComplete: false,\n parseStack: [],\n } as SuggestionResult;\n }\n\n this.parse();\n this.saveParseStack();\n this.saveMatchedText();\n this.saveMatch();\n this.saveError();\n this.saveOptions();\n this.saveNextToken();\n\n return {\n pattern: this.patternMatch?.pattern || null,\n astNode: this.patternMatch?.astNode || null,\n match: this.match,\n error: this.error,\n options: this.tokens,\n isComplete: this.cursor?.didSuccessfullyParse() || false,\n parseStack: this.parseStack,\n } as SuggestionResult;\n }\n\n private reset() {\n this.cursor = null;\n this.result = null;\n this.text = \"\";\n this.match = null;\n this.error = null;\n this.patternMatch = null;\n this.matchedText = \"\";\n this.rootPattern = null;\n this.tokens = {\n startIndex: 0,\n values: [],\n };\n this.options = [];\n this.parseStack = [];\n }\n\n private parse() {\n this.rootPattern = this.rootPattern;\n this.cursor = new Cursor(this.text || \"\");\n this.cursor.startRecording();\n this.result = this.rootPattern?.parse(this.cursor) || null;\n this.patternMatch = this.cursor.lastMatch;\n }\n\n private saveParseStack() {\n this.parseStack = this.cursor?.history.getLastParseStack() || [];\n }\n\n private saveMatchedText() {\n if (this.patternMatch?.astNode != null) {\n this.matchedText =\n this.text?.substring(0, this.patternMatch.astNode.endIndex + 1) || \"\";\n }\n }\n\n private saveMatch() {\n const node = this.patternMatch?.astNode;\n\n if (node == null) {\n this.match = null;\n return;\n }\n\n let endIndex = this.matchedText.length - 1;\n\n this.match = {\n text: this.matchedText,\n startIndex: 0,\n endIndex: endIndex,\n };\n }\n\n private saveError() {\n if (this.patternMatch?.astNode == null) {\n this.error = {\n startIndex: 0,\n endIndex: this.text.length - 1,\n text: this.text,\n };\n return this;\n }\n\n if (\n this.patternMatch != null &&\n this.text.length > this.matchedText.length\n ) {\n const difference = this.text.length - this.matchedText.length;\n const startIndex = this.patternMatch.astNode.endIndex + 1;\n const endIndex = startIndex + difference - 1;\n\n this.error = {\n startIndex: startIndex,\n endIndex: endIndex,\n text: this.text.substring(startIndex, endIndex + 1),\n };\n\n return;\n } else {\n this.error = null;\n return;\n }\n }\n\n private saveNextToken() {\n const isCompleteMatch =\n this.patternMatch?.pattern === this.rootPattern &&\n this.cursor?.didSuccessfullyParse();\n const noMatch = this.patternMatch?.astNode == null;\n const noOptions = this.options.length === 0;\n\n if (isCompleteMatch && noOptions) {\n this.tokens = null;\n return;\n }\n\n if (noMatch) {\n let options = this.rootPattern?.getTokens();\n\n options = options?.filter((option: any) => {\n return option.indexOf(this.text) === 0;\n });\n\n if (options?.length === 0) {\n this.tokens = null;\n return;\n }\n\n const values = options?.map((option) => {\n const parts = option.split(this.text);\n return parts[1];\n });\n\n this.tokens = {\n startIndex: 0,\n values: values || [],\n };\n\n this.matchedText = this.text;\n this.match = {\n text: this.text,\n startIndex: 0,\n endIndex: this.text.length - 1,\n };\n this.error = null;\n\n return;\n }\n\n const options = this.options;\n let startIndex = this.matchedText.length;\n\n if (this.matchedText.length < this.text.length) {\n const leftOver = this.text.substring(this.matchedText.length);\n const partialMatchOptions = options\n .filter((option: any) => {\n return option.indexOf(leftOver) === 0;\n })\n .map((option: any) => {\n return option.substring(leftOver.length);\n });\n\n if (partialMatchOptions.length === 0) {\n this.tokens = null;\n return;\n } else {\n if (this.match == null) {\n return;\n }\n\n this.match = {\n text: this.match.text + leftOver,\n startIndex: this.match.startIndex,\n endIndex: this.match.endIndex + leftOver.length,\n };\n\n this.error = null;\n\n this.tokens = {\n startIndex: this.match.endIndex + 1,\n values: partialMatchOptions,\n };\n\n return;\n }\n }\n\n this.tokens = {\n startIndex,\n values: options,\n };\n }\n\n private saveOptions() {\n const parents = new Map<Pattern, Pattern>();\n const cursor = this.cursor;\n\n if (cursor == null) {\n this.options = [];\n return;\n }\n\n const furthestMatches = cursor.history.astNodes.reduce(\n (acc: any, node: any, index: any) => {\n const pattern = cursor.history.patterns[index];\n const parent = pattern.parent;\n\n if (parent != null) {\n parents.set(parent, parent);\n }\n\n if (parents.has(pattern)){\n return acc;\n }\n\n if (node.endIndex === acc.furthestTextIndex) {\n acc.nodeIndexes.push(index);\n } else if (node.endIndex > acc.furthestTextIndex) {\n acc.furthestTextIndex = node.endIndex;\n acc.nodeIndexes = [index];\n }\n\n return acc;\n },\n { furthestTextIndex: -1, nodeIndexes: [] }\n );\n\n const matches = furthestMatches.nodeIndexes.reduce(\n (acc: any, index: any) => {\n const pattern = this.cursor?.history.patterns[index];\n const tokens = pattern?.getNextTokens();\n\n tokens?.forEach((token: any) => {\n acc[token] = true;\n });\n\n return acc;\n },\n {}\n );\n\n this.options = Object.keys(matches);\n }\n\n static suggest(text: string, pattern: Pattern) {\n return new TextSuggester().suggest(text, pattern);\n }\n}\n"],"names":["ParserError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/ast/Node.ts","../src/patterns/ParseError.ts","../src/patterns/CursorHistory.ts","../src/patterns/Cursor.ts","../src/patterns/Regex.ts","../src/patterns/clonePatterns.ts","../src/patterns/filterOutNull.ts","../src/patterns/findPattern.ts","../src/patterns/And.ts","../src/patterns/Literal.ts","../src/patterns/Not.ts","../src/patterns/Or.ts","../src/patterns/Repeat.ts","../src/patterns/Reference.ts","../src/intellisense/AutoComplete.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|