clarity-pattern-parser 3.0.14 → 3.0.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"RepeatComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/RepeatComposite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RepeatComposite.js","sourceRoot":"","sources":["../../../src/patterns/composite/RepeatComposite.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,10 @@ export default class RepeatValue extends ValuePattern {
51
51
  }
52
52
  else {
53
53
  this.nodes.push(node);
54
+ if (node.endIndex === this.cursor.lastIndex()) {
55
+ this._processMatch();
56
+ break;
57
+ }
54
58
  this.cursor.next();
55
59
  }
56
60
  }
@@ -58,8 +62,9 @@ export default class RepeatValue extends ValuePattern {
58
62
  }
59
63
  }
60
64
  _processMatch() {
65
+ const endsOnDivider = this.nodes.length % 2 === 0;
61
66
  this.cursor.resolveError();
62
- if (this.nodes.length === 0) {
67
+ if (endsOnDivider) {
63
68
  const parseError = new ParseError(`Did not find a repeating match of ${this.name}.`, this.mark, this);
64
69
  this.cursor.throwError(parseError);
65
70
  this.node = null;
@@ -1 +1 @@
1
- {"version":3,"file":"RepeatValue.js","sourceRoot":"","sources":["../../../src/patterns/value/RepeatValue.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IAQnD,YAAY,IAAY,EAAE,OAAqB,EAAE,OAAsB;QACrE,KAAK,CACH,cAAc,EACd,IAAI,EACJ,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACjD,CAAC;QAVG,UAAK,GAAgB,EAAE,CAAC;QAExB,SAAI,GAAW,CAAC,CAAC;QACjB,SAAI,GAAqB,IAAI,CAAC;QASnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC;QAEjD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,QAAQ,YAAY,aAAa,EAAE;YAC1C,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;SACH;IACH,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,WAAW;QACjB,OAAO,IAAI,EAAE;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAc,CAAC;YAE3D,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE;gBACpC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;aACP;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;oBAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,MAAM;iBACP;gBAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAEnB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAc,CAAC;oBAE3D,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE;wBACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,MAAM;qBACP;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;qBACpB;iBACF;aACF;SACF;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAI,UAAU,CAC/B,qCAAqC,IAAI,CAAC,IAAI,GAAG,EACjD,IAAI,CAAC,IAAI,EACT,IAAI,CACL,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;aAAM;YACL,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE5D,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CACvB,cAAc,EACd,IAAI,CAAC,IAAI,EACT,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,EACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAC3C,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;IACH,CAAC;IAED,KAAK,CAAC,IAAa;QACjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;CACF"}
1
+ {"version":3,"file":"RepeatValue.js","sourceRoot":"","sources":["../../../src/patterns/value/RepeatValue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarity-pattern-parser",
3
- "version": "3.0.14",
3
+ "version": "3.0.15",
4
4
  "description": "Parsing Library for Typescript and Javascript.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.esm.js",
@@ -176,8 +176,9 @@ export default class TextSuggester {
176
176
  this.patternMatch?.pattern === this.rootPattern &&
177
177
  this.cursor?.didSuccessfullyParse();
178
178
  const noMatch = this.patternMatch?.astNode == null;
179
+ const noOptions = this.options.length === 0;
179
180
 
180
- if (isCompleteMatch) {
181
+ if (isCompleteMatch && noOptions) {
181
182
  this.tokens = null;
182
183
  return;
183
184
  }
@@ -88,9 +88,12 @@ export default class RepeatComposite extends CompositePattern {
88
88
 
89
89
  private _processMatch() {
90
90
  const endsOnDivider = this.nodes.length % 2 === 0;
91
+ const noMatch = this.nodes.length === 0;
92
+ const hasDivider = this._divider != null;
93
+
91
94
  this.cursor.resolveError();
92
95
 
93
- if (endsOnDivider) {
96
+ if ((hasDivider && endsOnDivider) || noMatch) {
94
97
  this.cursor.throwError(
95
98
  new ParseError(
96
99
  `Did not find a repeating match of ${this.name}.`,
@@ -89,9 +89,12 @@ export default class RepeatValue extends ValuePattern {
89
89
 
90
90
  private _processMatch() {
91
91
  const endsOnDivider = this.nodes.length % 2 === 0;
92
+ const noMatch = this.nodes.length === 0;
93
+ const hasDivider = this._divider != null;
94
+
92
95
  this.cursor.resolveError();
93
96
 
94
- if (endsOnDivider) {
97
+ if ((hasDivider && endsOnDivider) || noMatch) {
95
98
  const parseError = new ParseError(
96
99
  `Did not find a repeating match of ${this.name}.`,
97
100
  this.mark,
@@ -267,6 +267,21 @@ describe("TextInspector", () => {
267
267
  expect(result.options.values.length).toBe(2);
268
268
  });
269
269
 
270
+ test("Suggest another item when its complete but is on a repeat.", () => {
271
+ const a = new Literal("a", "A");
272
+ const b = new Literal("b", "B");
273
+ const space = new Literal("space", " ");
274
+ const or = new OrComposite("names", [a, b]);
275
+
276
+ const repeat = new RepeatComposite("repeat", or, space);
277
+
278
+ const result = TextSuggester.suggest("A B", repeat);
279
+
280
+ expect(result.isComplete).toBe(true);
281
+ expect(result.options.values.length).toBe(1);
282
+ expect(result.options.values[0]).toBe(" ");
283
+ });
284
+
270
285
  test("Repeating pattern.", () => {
271
286
  const expression = generateExpression(["FlagX", "FlagY", "FlagZ"]);
272
287
  const result = TextSuggester.suggest("(FlagX AND ", expression);
@@ -13,7 +13,6 @@ import {
13
13
  import string from "./string";
14
14
  import number from "./number";
15
15
  import boolean from "./boolean";
16
- import Cursor from "../../Cursor";
17
16
 
18
17
  const openCurlyBracket = new Literal("open-curly-bracket", "{");
19
18
  const closeCurlyBracket = new Literal("close-curly-bracket", "}");