clarity-pattern-parser 3.0.13 → 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":"AAAA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,yBAAyB,CAAC;AACpD,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAKpD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,gBAAgB;IAQ3D,YAAY,IAAY,EAAE,OAAgB,EAAE,OAAiB;QAC3D,KAAK,CACH,kBAAkB,EAClB,IAAI,EACJ,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACjD,CAAC;QAVG,UAAK,GAAW,EAAE,CAAC;QAEnB,SAAI,GAAW,CAAC,CAAC;QACjB,SAAI,GAAyB,IAAI,CAAC;QAQvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,QAAQ,YAAY,iBAAiB,EAAE;YAC9C,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;YAE9C,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;gBACpD,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;oBAE9C,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;wBACpD,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,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,IAAI,UAAU,CACZ,qCAAqC,IAAI,CAAC,IAAI,GAAG,EACjD,IAAI,CAAC,IAAI,EACT,IAAI,CACL,CACF,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,aAAa,CAC3B,kBAAkB,EAClB,IAAI,CAAC,IAAI,EACT,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,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YAEvC,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,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;CACF"}
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":"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"}
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.13",
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
  }
@@ -87,9 +87,13 @@ export default class RepeatComposite extends CompositePattern {
87
87
  }
88
88
 
89
89
  private _processMatch() {
90
+ const endsOnDivider = this.nodes.length % 2 === 0;
91
+ const noMatch = this.nodes.length === 0;
92
+ const hasDivider = this._divider != null;
93
+
90
94
  this.cursor.resolveError();
91
95
 
92
- if (this.nodes.length === 0) {
96
+ if ((hasDivider && endsOnDivider) || noMatch) {
93
97
  this.cursor.throwError(
94
98
  new ParseError(
95
99
  `Did not find a repeating match of ${this.name}.`,
@@ -88,9 +88,13 @@ export default class RepeatValue extends ValuePattern {
88
88
  }
89
89
 
90
90
  private _processMatch() {
91
+ const endsOnDivider = this.nodes.length % 2 === 0;
92
+ const noMatch = this.nodes.length === 0;
93
+ const hasDivider = this._divider != null;
94
+
91
95
  this.cursor.resolveError();
92
96
 
93
- if (this.nodes.length === 0) {
97
+ if ((hasDivider && endsOnDivider) || noMatch) {
94
98
  const parseError = new ParseError(
95
99
  `Did not find a repeating match of ${this.name}.`,
96
100
  this.mark,
@@ -251,23 +251,36 @@ describe("TextInspector", () => {
251
251
  expect(inspection.isComplete).toBe(false);
252
252
  });
253
253
 
254
- // This is a current bug. Repeat can end on a divider and that isn't right.
254
+ test("Suggest another item in the repeat.", () => {
255
+ const a = new Literal("a", "A");
256
+ const b = new Literal("b", "B");
257
+ const space = new Literal("space", " ");
258
+ const or = new OrComposite("names", [a, b]);
259
+
260
+ const repeat = new RepeatComposite("repeat", or, space);
255
261
 
256
- // test("Suggest another item in the repeat.", () => {
257
- // const a = new Literal("a", "A");
258
- // const b = new Literal("b", "B");
259
- // const space = new Literal("space", " ");
260
- // const or = new OrComposite("names", [a, b]);
262
+ const result = TextSuggester.suggest("A B ", repeat);
261
263
 
262
- // const repeat = new RepeatComposite("repeat", or, space);
264
+ expect(result.isComplete).toBe(false);
265
+ expect(result.options.values[0]).toBe("A");
266
+ expect(result.options.values[1]).toBe("B");
267
+ expect(result.options.values.length).toBe(2);
268
+ });
263
269
 
264
- // const result = TextSuggester.suggest("A B ", repeat);
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]);
265
275
 
266
- // expect(result.isComplete).toBe(false);
267
- // expect(result.options.values[0]).toBe("A");
268
- // expect(result.options.values[1]).toBe("B");
269
- // expect(result.options.values.length).toBe(2);
270
- // });
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
+ });
271
284
 
272
285
  test("Repeating pattern.", () => {
273
286
  const expression = generateExpression(["FlagX", "FlagY", "FlagZ"]);
@@ -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", "}");