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.
Files changed (133) hide show
  1. package/README.md +466 -1
  2. package/TODO.md +76 -2
  3. package/dist/ast/Node.d.ts +49 -11
  4. package/dist/ast/Visitor.d.ts +31 -31
  5. package/dist/index.browser.js +1513 -1495
  6. package/dist/index.browser.js.map +1 -1
  7. package/dist/index.d.ts +17 -17
  8. package/dist/index.esm.js +1480 -1459
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +1481 -1463
  11. package/dist/index.js.map +1 -1
  12. package/dist/intellisense/AutoComplete.d.ts +28 -0
  13. package/dist/intellisense/Suggestion.d.ts +11 -0
  14. package/dist/intellisense/SuggestionOption.d.ts +4 -0
  15. package/dist/patterns/And.d.ts +37 -24
  16. package/dist/patterns/Cursor.d.ts +37 -0
  17. package/dist/patterns/CursorHistory.d.ts +30 -0
  18. package/dist/patterns/Literal.d.ts +35 -19
  19. package/dist/patterns/Not.d.ts +29 -11
  20. package/dist/patterns/Or.d.ts +33 -22
  21. package/dist/patterns/ParseError.d.ts +6 -8
  22. package/dist/patterns/ParseResult.d.ts +6 -0
  23. package/dist/patterns/Pattern.d.ts +20 -26
  24. package/dist/patterns/Reference.d.ts +34 -12
  25. package/dist/patterns/Regex.d.ts +41 -21
  26. package/dist/patterns/Repeat.d.ts +38 -20
  27. package/dist/patterns/clonePatterns.d.ts +2 -0
  28. package/dist/patterns/filterOutNull.d.ts +2 -0
  29. package/dist/patterns/findPattern.d.ts +2 -0
  30. package/dist/patterns/getNextPattern.d.ts +2 -0
  31. package/jest.config.js +2 -1
  32. package/package.json +4 -5
  33. package/rollup.config.js +1 -1
  34. package/src/ast/Node.test.ts +364 -0
  35. package/src/ast/Node.ts +237 -23
  36. package/src/index.ts +25 -27
  37. package/src/intellisense/AutoComplete.test.ts +150 -0
  38. package/src/intellisense/AutoComplete.ts +200 -0
  39. package/src/intellisense/Suggestion.ts +12 -0
  40. package/src/intellisense/SuggestionOption.ts +4 -0
  41. package/src/{tests/cssPatterns → intellisense/css}/cssValue.ts +1 -1
  42. package/src/{tests/cssPatterns → intellisense/css}/divider.ts +2 -1
  43. package/src/intellisense/css/hex.ts +6 -0
  44. package/src/{tests/cssPatterns → intellisense/css}/method.ts +8 -9
  45. package/src/intellisense/css/name.ts +5 -0
  46. package/src/{tests/javascriptPatterns → intellisense/css}/number.ts +3 -3
  47. package/src/intellisense/css/spaces.ts +6 -0
  48. package/src/intellisense/css/unit.ts +10 -0
  49. package/src/{tests/cssPatterns → intellisense/css}/value.ts +1 -1
  50. package/src/{tests/cssPatterns → intellisense/css}/values.ts +1 -1
  51. package/src/intellisense/javascript/Javascript.test.ts +203 -0
  52. package/src/intellisense/javascript/arrayLiteral.ts +25 -0
  53. package/src/intellisense/javascript/deleteStatement.ts +14 -0
  54. package/src/intellisense/javascript/escapedCharacter.ts +49 -0
  55. package/src/intellisense/javascript/exponent.ts +24 -0
  56. package/src/intellisense/javascript/expression.ts +87 -0
  57. package/src/intellisense/javascript/expressionStatement.ts +29 -0
  58. package/src/intellisense/javascript/fraction.ts +11 -0
  59. package/src/intellisense/javascript/infixOperator.ts +36 -0
  60. package/src/intellisense/javascript/integer.ts +7 -0
  61. package/src/intellisense/javascript/invocation.ts +28 -0
  62. package/src/intellisense/javascript/literal.ts +14 -0
  63. package/src/intellisense/javascript/name.ts +3 -0
  64. package/src/intellisense/javascript/numberLiteral.ts +10 -0
  65. package/src/intellisense/javascript/objectLiteral.ts +30 -0
  66. package/src/intellisense/javascript/optionalSpaces.ts +3 -0
  67. package/src/intellisense/javascript/parameters.ts +20 -0
  68. package/src/intellisense/javascript/prefixOperator.ts +13 -0
  69. package/src/intellisense/javascript/propertyAccess.ts +23 -0
  70. package/src/intellisense/javascript/stringLiteral.ts +28 -0
  71. package/src/patterns/And.test.ts +310 -0
  72. package/src/patterns/And.ts +244 -119
  73. package/src/patterns/Cursor.test.ts +93 -0
  74. package/src/patterns/Cursor.ts +133 -0
  75. package/src/patterns/CursorHistory.test.ts +54 -0
  76. package/src/patterns/CursorHistory.ts +95 -0
  77. package/src/patterns/Literal.test.ts +166 -0
  78. package/src/patterns/Literal.ts +141 -62
  79. package/src/patterns/Not.test.ts +168 -0
  80. package/src/patterns/Not.ts +113 -32
  81. package/src/patterns/Or.test.ts +209 -0
  82. package/src/patterns/Or.ts +128 -97
  83. package/src/patterns/ParseError.ts +3 -7
  84. package/src/patterns/ParseResult.ts +7 -0
  85. package/src/patterns/Pattern.ts +21 -150
  86. package/src/patterns/Reference.test.ts +193 -0
  87. package/src/patterns/Reference.ts +114 -88
  88. package/src/patterns/Regex.test.ts +133 -0
  89. package/src/patterns/Regex.ts +117 -60
  90. package/src/patterns/Repeat.test.ts +218 -0
  91. package/src/patterns/Repeat.ts +220 -103
  92. package/src/patterns/clonePatterns.ts +5 -0
  93. package/src/patterns/filterOutNull.ts +13 -0
  94. package/src/patterns/findPattern.ts +25 -0
  95. package/src/Cursor.ts +0 -141
  96. package/src/CursorHistory.ts +0 -146
  97. package/src/TextSuggester.ts +0 -317
  98. package/src/ast/Visitor.ts +0 -271
  99. package/src/patterns/LookAhead.ts +0 -32
  100. package/src/patterns/Recursive.ts +0 -92
  101. package/src/tests/And.test.ts +0 -180
  102. package/src/tests/ComplexExamples.test.ts +0 -86
  103. package/src/tests/CssPatterns.test.ts +0 -90
  104. package/src/tests/CursorHistory.test.ts +0 -107
  105. package/src/tests/Cusor.test.ts +0 -174
  106. package/src/tests/HtmlPatterns.test.ts +0 -34
  107. package/src/tests/Literal.test.ts +0 -79
  108. package/src/tests/LookAhead.test.ts +0 -44
  109. package/src/tests/Not.test.ts +0 -51
  110. package/src/tests/Or.test.ts +0 -113
  111. package/src/tests/Pattern.test.ts +0 -290
  112. package/src/tests/Recursive.test.ts +0 -64
  113. package/src/tests/Reference.test.ts +0 -16
  114. package/src/tests/Repeat.test.ts +0 -75
  115. package/src/tests/SpeedTest.test.ts +0 -31
  116. package/src/tests/TextSuggester.test.ts +0 -297
  117. package/src/tests/Visitor.test.ts +0 -331
  118. package/src/tests/cssPatterns/hex.ts +0 -5
  119. package/src/tests/cssPatterns/name.ts +0 -5
  120. package/src/tests/cssPatterns/number.ts +0 -8
  121. package/src/tests/cssPatterns/spaces.ts +0 -5
  122. package/src/tests/cssPatterns/unit.ts +0 -8
  123. package/src/tests/htmlPatterns/element.ts +0 -49
  124. package/src/tests/javascriptPatterns/boolean.ts +0 -10
  125. package/src/tests/javascriptPatterns/json.ts +0 -67
  126. package/src/tests/javascriptPatterns/name.ts +0 -5
  127. package/src/tests/javascriptPatterns/objectLiteral.ts +0 -40
  128. package/src/tests/javascriptPatterns/string.ts +0 -84
  129. package/src/tests/javascriptPatterns/unit.ts +0 -8
  130. package/src/tests/javascriptPatterns/whitespace.ts +0 -44
  131. package/src/tests/naturalLanguage/filter.ts +0 -37
  132. package/src/tests/patterns/sentence.ts +0 -37
  133. /package/src/{tests/cssPatterns → intellisense/css}/optionalSpaces.ts +0 -0
@@ -1,22 +1,33 @@
1
- import Pattern from "./Pattern";
2
- import ParseError from "./ParseError";
3
- import Cursor from "../Cursor";
4
- import Node from "../ast/Node";
5
- export default class Or extends Pattern {
6
- patternIndex: number;
7
- errors: ParseError[];
8
- node: Node | null;
9
- cursor: Cursor | null;
10
- mark: number;
11
- parseError: ParseError | null;
12
- constructor(name: string, patterns: Pattern[], isOptional?: boolean);
13
- private assertArguments;
14
- private resetState;
15
- private safelyGetCursor;
16
- parse(cursor: Cursor): Node | null;
17
- private tryToParse;
18
- private processError;
19
- private processResult;
20
- clone(name?: string, isOptional?: boolean): Or;
21
- getTokens(): string[];
22
- }
1
+ import { Node } from "../ast/Node";
2
+ import { Cursor } from "./Cursor";
3
+ import { Pattern } from "./Pattern";
4
+ export declare class Or implements Pattern {
5
+ private _type;
6
+ private _name;
7
+ private _parent;
8
+ private _children;
9
+ private _isOptional;
10
+ private _firstIndex;
11
+ get type(): string;
12
+ get name(): string;
13
+ get parent(): Pattern | null;
14
+ set parent(pattern: Pattern | null);
15
+ get children(): Pattern[];
16
+ get isOptional(): boolean;
17
+ constructor(name: string, options: Pattern[], isOptional?: boolean);
18
+ private _assignChildrenToParent;
19
+ test(text: string): boolean;
20
+ exec(text: string): {
21
+ ast: Node | null;
22
+ cursor: Cursor;
23
+ };
24
+ parse(cursor: Cursor): Node | null;
25
+ private _tryToParse;
26
+ getTokens(): string[];
27
+ getTokensAfter(_childReference: Pattern): string[];
28
+ getNextTokens(): string[];
29
+ getPatternsAfter(_childReference: Pattern): Pattern[];
30
+ getNextPatterns(): Pattern[];
31
+ findPattern(predicate: (p: Pattern) => boolean): Pattern | null;
32
+ clone(name?: string, isOptional?: boolean): Pattern;
33
+ }
@@ -1,8 +1,6 @@
1
- import Pattern from "./Pattern";
2
- export default class ParseError {
3
- message: string;
4
- name: string;
5
- index: number;
6
- pattern: Pattern;
7
- constructor(message: string, index: number, pattern: Pattern);
8
- }
1
+ import { Pattern } from "./Pattern";
2
+ export declare class ParseError {
3
+ index: number;
4
+ pattern: Pattern;
5
+ constructor(index: number, pattern: Pattern);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { Node } from "../ast/Node";
2
+ import { Cursor } from "./Cursor";
3
+ export interface ParseResult {
4
+ ast: Node | null;
5
+ cursor: Cursor;
6
+ }
@@ -1,26 +1,20 @@
1
- import Cursor from "../Cursor";
2
- import Node from "../ast/Node";
3
- export default abstract class Pattern {
4
- protected _type: string;
5
- protected _name: string;
6
- protected _children: Pattern[];
7
- protected _parent: Pattern | null;
8
- protected _isOptional: boolean;
9
- get isOptional(): boolean;
10
- constructor(type: string, name: string, children?: Pattern[], isOptional?: boolean);
11
- abstract parse(cursor: Cursor): Node | null;
12
- exec(text: string): Node | null;
13
- test(text: string): boolean;
14
- get name(): string;
15
- get type(): string;
16
- get parent(): Pattern | null;
17
- set parent(value: Pattern | null);
18
- get children(): Pattern[];
19
- set children(value: Pattern[]);
20
- abstract clone(name?: string): Pattern;
21
- abstract getTokens(): string[];
22
- getTokenValue(): string | null;
23
- getNextTokens(): string[];
24
- private cloneChildren;
25
- private assignAsParent;
26
- }
1
+ import { Cursor } from "./Cursor";
2
+ import { Node } from "../ast/Node";
3
+ import { ParseResult } from "./ParseResult";
4
+ export interface Pattern {
5
+ type: string;
6
+ name: string;
7
+ parent: Pattern | null;
8
+ children: Pattern[];
9
+ isOptional: boolean;
10
+ parse(cursor: Cursor): Node | null;
11
+ exec(text: string): ParseResult;
12
+ test(text: string): boolean;
13
+ clone(name?: string, isOptional?: boolean): Pattern;
14
+ getTokens(): string[];
15
+ getTokensAfter(childReference: Pattern): string[];
16
+ getPatternsAfter(childReference: Pattern): Pattern[];
17
+ getNextPatterns(): Pattern[];
18
+ getNextTokens(): string[];
19
+ findPattern(predicate: (p: Pattern) => boolean): Pattern | null;
20
+ }
@@ -1,12 +1,34 @@
1
- import Pattern from "./Pattern";
2
- import Cursor from "../Cursor";
3
- export default class Reference extends Pattern {
4
- constructor(name: string, isOptional?: boolean);
5
- private getRoot;
6
- private findPattern;
7
- private walkTheTree;
8
- parse(cursor: Cursor): import("..").Node | null;
9
- clone(name?: string, isOptional?: boolean): Reference;
10
- private safelyGetPattern;
11
- getTokens(): string[];
12
- }
1
+ import { Node } from "../ast/Node";
2
+ import { Cursor } from "./Cursor";
3
+ import { Pattern } from "./Pattern";
4
+ export declare class Reference implements Pattern {
5
+ private _type;
6
+ private _name;
7
+ private _parent;
8
+ private _isOptional;
9
+ private _pattern;
10
+ private _children;
11
+ get type(): string;
12
+ get name(): string;
13
+ get parent(): Pattern | null;
14
+ set parent(pattern: Pattern | null);
15
+ get children(): Pattern[];
16
+ get isOptional(): boolean;
17
+ constructor(name: string, isOptional?: boolean);
18
+ test(text: string): boolean;
19
+ exec(text: string): {
20
+ ast: Node | null;
21
+ cursor: Cursor;
22
+ };
23
+ parse(cursor: Cursor): Node | null;
24
+ private _getPatternSafely;
25
+ private _findPattern;
26
+ private _getRoot;
27
+ getTokens(): string[];
28
+ getTokensAfter(_lastMatched: Pattern): string[];
29
+ getNextTokens(): string[];
30
+ getPatternsAfter(_childReference: Pattern): Pattern[];
31
+ getNextPatterns(): Pattern[];
32
+ findPattern(_predicate: (p: Pattern) => boolean): Pattern | null;
33
+ clone(name?: string, isOptional?: boolean): Pattern;
34
+ }
@@ -1,21 +1,41 @@
1
- import Node from "../ast/Node";
2
- import Pattern from "./Pattern";
3
- import Cursor from "../Cursor";
4
- export default class Regex extends Pattern {
5
- private regexString;
6
- private regex;
7
- private node;
8
- private cursor;
9
- private substring;
10
- constructor(name: string, regex: string, isOptional?: boolean);
11
- private assertArguments;
12
- parse(cursor: Cursor): Node | null;
13
- private resetState;
14
- private tryToParse;
15
- private processResult;
16
- private processError;
17
- private safelyGetCursor;
18
- clone(name?: string, isOptional?: boolean): Regex;
19
- getTokenValue(): string;
20
- getTokens(): string[];
21
- }
1
+ import { Node } from "../ast/Node";
2
+ import { Pattern } from "./Pattern";
3
+ import { Cursor } from "./Cursor";
4
+ export declare class Regex implements Pattern {
5
+ private _type;
6
+ private _name;
7
+ private _isOptional;
8
+ private _parent;
9
+ private _originalRegexString;
10
+ private _regex;
11
+ private _node;
12
+ private _cursor;
13
+ private _substring;
14
+ private _tokens;
15
+ get type(): string;
16
+ get name(): string;
17
+ get parent(): Pattern | null;
18
+ set parent(pattern: Pattern | null);
19
+ get children(): Pattern[];
20
+ get isOptional(): boolean;
21
+ constructor(name: string, regex: string, isOptional?: boolean);
22
+ private assertArguments;
23
+ test(text: string): boolean;
24
+ exec(text: string): {
25
+ ast: Node | null;
26
+ cursor: Cursor;
27
+ };
28
+ parse(cursor: Cursor): Node | null;
29
+ private resetState;
30
+ private tryToParse;
31
+ private processResult;
32
+ private processError;
33
+ clone(name?: string, isOptional?: boolean): Regex;
34
+ getTokens(): string[];
35
+ getTokensAfter(_childReference: Pattern): string[];
36
+ getNextTokens(): string[];
37
+ getPatternsAfter(_childReference: Pattern): Pattern[];
38
+ getNextPatterns(): Pattern[];
39
+ findPattern(_predicate: (p: Pattern) => boolean): Pattern | null;
40
+ setTokens(tokens: string[]): void;
41
+ }
@@ -1,20 +1,38 @@
1
- import Pattern from "./Pattern";
2
- import Node from "../ast/Node";
3
- import Cursor from "../Cursor";
4
- export default class Repeat extends Pattern {
5
- _pattern: Pattern;
6
- _divider: Pattern;
7
- nodes: Node[];
8
- cursor: Cursor;
9
- mark: number;
10
- node: Node | null;
11
- constructor(name: string, pattern: Pattern, divider?: Pattern, isOptional?: boolean);
12
- private assertArguments;
13
- private _reset;
14
- parse(cursor: Cursor): Node | null;
15
- private tryToParse;
16
- private processResult;
17
- private safelyGetCursor;
18
- clone(name?: string, isOptional?: boolean): Repeat;
19
- getTokens(): string[];
20
- }
1
+ import { Node } from "../ast/Node";
2
+ import { Cursor } from "./Cursor";
3
+ import { Pattern } from "./Pattern";
4
+ export declare class Repeat implements Pattern {
5
+ private _type;
6
+ private _name;
7
+ private _parent;
8
+ private _children;
9
+ private _pattern;
10
+ private _divider;
11
+ private _isOptional;
12
+ private _nodes;
13
+ private _firstIndex;
14
+ get type(): string;
15
+ get name(): string;
16
+ get parent(): Pattern | null;
17
+ set parent(pattern: Pattern | null);
18
+ get children(): Pattern[];
19
+ get isOptional(): boolean;
20
+ constructor(name: string, pattern: Pattern, divider?: Pattern, isOptional?: boolean);
21
+ private _assignChildrenToParent;
22
+ test(text: string): boolean;
23
+ exec(text: string): {
24
+ ast: Node | null;
25
+ cursor: Cursor;
26
+ };
27
+ parse(cursor: Cursor): Node | null;
28
+ private tryToParse;
29
+ private createNode;
30
+ private getLastValidNode;
31
+ getTokens(): string[];
32
+ getTokensAfter(childReference: Pattern): string[];
33
+ getNextTokens(): string[];
34
+ getPatternsAfter(childReference: Pattern): Pattern[];
35
+ getNextPatterns(): Pattern[];
36
+ findPattern(predicate: (p: Pattern) => boolean): Pattern | null;
37
+ clone(name?: string, isOptional?: boolean): Pattern;
38
+ }
@@ -0,0 +1,2 @@
1
+ import { Pattern } from "./Pattern";
2
+ export declare function clonePatterns(patterns: Pattern[], isOptional?: boolean): Pattern[];
@@ -0,0 +1,2 @@
1
+ import { Node } from "../ast/Node";
2
+ export declare function filterOutNull(nodes: (Node | null)[]): Node[];
@@ -0,0 +1,2 @@
1
+ import { Pattern } from "./Pattern";
2
+ export declare function findPattern(pattern: Pattern, predicate: (pattern: Pattern) => boolean): Pattern | null;
@@ -0,0 +1,2 @@
1
+ import { Pattern } from "./Pattern";
2
+ export declare function getNextPattern(pattern: Pattern): Pattern | null;
package/jest.config.js CHANGED
@@ -9,4 +9,5 @@ module.exports = {
9
9
  "transform": {
10
10
  "^.+\\.(ts|tsx)$": "ts-jest"
11
11
  },
12
- }
12
+ coverageReporters: ["lcov", "text-summary"],
13
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarity-pattern-parser",
3
- "version": "4.0.3",
3
+ "version": "6.0.0",
4
4
  "description": "Parsing Library for Typescript and Javascript.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.esm.js",
@@ -8,17 +8,16 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "scripts": {
10
10
  "build": "rollup -c -m",
11
- "test": "jest"
11
+ "test": "jest --coverage"
12
12
  },
13
13
  "keywords": [],
14
14
  "devDependencies": {
15
15
  "@types/jest": "^26.0.23",
16
16
  "jest": "^26.6.3",
17
17
  "rollup": "^2.41.2",
18
- "rollup-plugin-typescript2": "^0.30.0",
18
+ "@rollup/plugin-typescript": "^11.1.6",
19
19
  "ts-jest": "^26.5.3",
20
20
  "tslib": "^2.1.0",
21
21
  "typescript": "^4.2.3"
22
- },
23
- "dependencies": {}
22
+ }
24
23
  }
package/rollup.config.js CHANGED
@@ -1,4 +1,4 @@
1
- import typescript from "rollup-plugin-typescript2";
1
+ import typescript from "@rollup/plugin-typescript";
2
2
  import pkg from "./package.json";
3
3
 
4
4
  export default {