pacc 8.10.0 → 8.11.1

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 CHANGED
@@ -32,16 +32,14 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
32
32
 
33
33
  * [AST](#ast)
34
34
  * [Properties](#properties)
35
- * [binopError](#binoperror)
36
- * [Parameters](#parameters)
37
35
  * [prepareAttributesDefinitions](#prepareattributesdefinitions)
38
- * [Parameters](#parameters-1)
36
+ * [Parameters](#parameters)
39
37
  * [mergeAttributeDefinitions](#mergeattributedefinitions)
40
- * [Parameters](#parameters-2)
38
+ * [Parameters](#parameters-1)
41
39
  * [attributeIterator](#attributeiterator)
42
- * [Parameters](#parameters-3)
40
+ * [Parameters](#parameters-2)
43
41
  * [parseBytes](#parsebytes)
44
- * [Parameters](#parameters-4)
42
+ * [Parameters](#parameters-3)
45
43
  * [AttributeDefinition](#attributedefinition)
46
44
  * [Properties](#properties-1)
47
45
  * [default\_attribute](#default_attribute)
@@ -99,40 +97,40 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
99
97
  * [timeout\_attribute](#timeout_attribute)
100
98
  * [language\_attribute](#language_attribute)
101
99
  * [environmentValues](#environmentvalues)
102
- * [Parameters](#parameters-5)
100
+ * [Parameters](#parameters-4)
103
101
  * [expandContextDefault](#expandcontextdefault)
104
102
  * [expandContextDoubbleCurly](#expandcontextdoubblecurly)
105
103
  * [expand](#expand)
106
- * [Parameters](#parameters-6)
104
+ * [Parameters](#parameters-5)
107
105
  * [promises](#promises)
108
106
  * [filter](#filter)
109
- * [Parameters](#parameters-7)
107
+ * [Parameters](#parameters-6)
110
108
  * [setAttributes](#setattributes)
111
- * [Parameters](#parameters-8)
109
+ * [Parameters](#parameters-7)
112
110
  * [getAttributes](#getattributes)
113
- * [Parameters](#parameters-9)
111
+ * [Parameters](#parameters-8)
114
112
  * [getAttributesJSON](#getattributesjson)
115
- * [Parameters](#parameters-10)
113
+ * [Parameters](#parameters-9)
116
114
  * [tokens](#tokens)
117
115
  * [tokens](#tokens-1)
118
- * [Parameters](#parameters-11)
116
+ * [Parameters](#parameters-10)
119
117
  * [setAttribute](#setattribute)
120
- * [Parameters](#parameters-12)
118
+ * [Parameters](#parameters-11)
121
119
  * [getAttribute](#getattribute)
122
- * [Parameters](#parameters-13)
120
+ * [Parameters](#parameters-12)
123
121
  * [getAttributeAndOperator](#getattributeandoperator)
124
- * [Parameters](#parameters-14)
122
+ * [Parameters](#parameters-13)
125
123
  * [parseDuration](#parseduration)
126
- * [Parameters](#parameters-15)
124
+ * [Parameters](#parameters-14)
127
125
  * [formatDuration](#formatduration)
128
- * [Parameters](#parameters-16)
126
+ * [Parameters](#parameters-15)
129
127
  * [formatDurationISO](#formatdurationiso)
130
- * [Parameters](#parameters-17)
128
+ * [Parameters](#parameters-16)
131
129
  * [lookup](#lookup)
132
130
  * [Token](#token)
133
131
  * [Properties](#properties-2)
134
132
  * [createToken](#createtoken)
135
- * [Parameters](#parameters-18)
133
+ * [Parameters](#parameters-17)
136
134
  * [PLUS](#plus)
137
135
  * [MINUS](#minus)
138
136
  * [STAR](#star)
@@ -160,11 +158,14 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
160
158
  * [BAR](#bar)
161
159
  * [DOUBLE\_BAR](#double_bar)
162
160
  * [IDENTIFIER](#identifier)
161
+ * [STRING](#string)
162
+ * [NUMBER](#number)
163
+ * [BOOLEAN](#boolean)
163
164
  * [EOF](#eof)
164
165
  * [Type](#type)
165
166
  * [Properties](#properties-3)
166
167
  * [raiseOnUnknownType](#raiseonunknowntype)
167
- * [Parameters](#parameters-19)
168
+ * [Parameters](#parameters-18)
168
169
 
169
170
  ## AST
170
171
 
@@ -174,14 +175,6 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
174
175
 
175
176
  * `eval` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** 
176
177
 
177
- ## binopError
178
-
179
- ### Parameters
180
-
181
- * `token` **[Token](#token)** 
182
- * `left` **[AST](#ast)** 
183
- * `right` **[AST](#ast)** 
184
-
185
178
  ## prepareAttributesDefinitions
186
179
 
187
180
  Create attributes from its definition.
@@ -661,7 +654,8 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
661
654
  * `str` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
662
655
  * `precedence` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** (optional, default `0`)
663
656
  * `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** 
664
- * `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** 
657
+ * `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** (optional, default `()=>{}`)
658
+ * `nud` (optional, default `()=>{}`)
665
659
 
666
660
  Returns **[Token](#token)** 
667
661
 
@@ -773,6 +767,18 @@ Type: [Token](#token)
773
767
 
774
768
  Type: [Token](#token)
775
769
 
770
+ ## STRING
771
+
772
+ Type: [Token](#token)
773
+
774
+ ## NUMBER
775
+
776
+ Type: [Token](#token)
777
+
778
+ ## BOOLEAN
779
+
780
+ Type: [Token](#token)
781
+
776
782
  ## EOF
777
783
 
778
784
  Type: [Token](#token)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "8.10.0",
3
+ "version": "8.11.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/ast.mjs CHANGED
@@ -1,24 +1,9 @@
1
- import {
2
- DOUBLE_BAR,
3
- DOUBLE_AMPERSAND,
4
- EQUAL,
5
- NOT_EQUAL,
6
- LESS,
7
- LESS_EQUAL,
8
- GREATER,
9
- GREATER_EQUAL,
10
- STAR,
11
- DIVIDE,
12
- PLUS,
13
- MINUS
14
- } from "./tokens.mjs";
15
1
 
16
2
  /**
17
3
  * @typedef {Object} AST
18
4
  * @property {Function} [eval]
19
5
  */
20
6
 
21
-
22
7
  export function pathEval(node, current, context) {
23
8
  let collection = false;
24
9
  let first = true;
@@ -14,7 +14,10 @@ import {
14
14
  GREATER,
15
15
  GREATER_EQUAL,
16
16
  STAR,
17
- IDENTIFIER
17
+ IDENTIFIER,
18
+ STRING,
19
+ NUMBER,
20
+ BOOLEAN
18
21
  } from "./tokens.mjs";
19
22
  import { parseOnly } from "./expression.mjs";
20
23
  import { toInternal } from "./attributes.mjs";
@@ -146,6 +149,9 @@ export function getAttributeAndOperator(object, expression) {
146
149
  predicateTokens.push(token[0]);
147
150
  break;
148
151
 
152
+ case STRING:
153
+ case NUMBER:
154
+ case BOOLEAN:
149
155
  case IDENTIFIER:
150
156
  if (object !== undefined) {
151
157
  switch (typeof object[token[1]]) {
@@ -163,22 +169,6 @@ export function getAttributeAndOperator(object, expression) {
163
169
  }
164
170
  }
165
171
  break;
166
- default:
167
- if (object !== undefined) {
168
- switch (typeof object[token[0]]) {
169
- case "function":
170
- object = object[token[0]]();
171
- if (typeof object[Symbol.iterator] === "function") {
172
- object = [...object];
173
- }
174
- break;
175
- default:
176
- object = object[token[0]];
177
- break;
178
- case "undefined":
179
- return [undefined, op];
180
- }
181
- }
182
172
  }
183
173
  }
184
174
 
package/src/tokens.mjs CHANGED
@@ -10,8 +10,6 @@ const lookup = {};
10
10
  * @property {string} str
11
11
  */
12
12
 
13
- function infix() {}
14
-
15
13
  /**
16
14
  *
17
15
  * @param {string} str
@@ -94,6 +92,9 @@ export /** @type {Token} */ const MINUS = createBinopToken(
94
92
  "infix",
95
93
  (left, right) => left - right
96
94
  );
95
+
96
+ MINUS.nud = (parser) => - parser.value;
97
+
97
98
  export /** @type {Token} */ const STAR = createBinopToken(
98
99
  "*",
99
100
  60,
@@ -257,6 +258,29 @@ export /** @type {Token} */ const IDENTIFIER = createToken(
257
258
  }
258
259
  );
259
260
 
261
+ export /** @type {Token} */ const STRING = createToken(
262
+ "STRING",
263
+ 0,
264
+ undefined,
265
+ undefined,
266
+ parser => parser.value
267
+ );
268
+
269
+ export /** @type {Token} */ const NUMBER = createToken(
270
+ "NUMBER",
271
+ 0,
272
+ undefined,
273
+ undefined,
274
+ parser => parser.value
275
+ );
276
+ export /** @type {Token} */ const BOOLEAN = createToken(
277
+ "BOOLEAN",
278
+ 0,
279
+ undefined,
280
+ undefined,
281
+ parser => parser.value
282
+ );
283
+
260
284
  export /** @type {Token} */ const EOF = createToken(
261
285
  "EOF",
262
286
  -1,
@@ -268,8 +292,8 @@ export /** @type {Token} */ const EOF = createToken(
268
292
  );
269
293
 
270
294
  export const keywords = {
271
- true: [true],
272
- false: [false]
295
+ true: [BOOLEAN, true],
296
+ false: [BOOLEAN, false]
273
297
  };
274
298
 
275
299
  const esc = {
@@ -331,7 +355,7 @@ export function* tokens(string, options = {}) {
331
355
  case " ":
332
356
  switch (state) {
333
357
  case "number":
334
- yield [options.parseFloat(value)];
358
+ yield [NUMBER, options.parseFloat(value)];
335
359
  state = undefined;
336
360
  case undefined:
337
361
  break;
@@ -360,13 +384,13 @@ export function* tokens(string, options = {}) {
360
384
  case "'":
361
385
  switch (state) {
362
386
  case "number":
363
- yield [options.parseFloat(value)];
387
+ yield [NUMBER,options.parseFloat(value)];
364
388
  case undefined:
365
389
  startString(c);
366
390
  break;
367
391
  case "string":
368
392
  if (c === quote) {
369
- yield [value];
393
+ yield [STRING, value];
370
394
  state = undefined;
371
395
  } else {
372
396
  value += c;
@@ -388,7 +412,7 @@ export function* tokens(string, options = {}) {
388
412
  case "|":
389
413
  switch (state) {
390
414
  case "number":
391
- yield [options.parseFloat(value)];
415
+ yield [NUMBER, options.parseFloat(value)];
392
416
  case undefined:
393
417
  state = c;
394
418
  break;
@@ -419,7 +443,7 @@ export function* tokens(string, options = {}) {
419
443
  case "=":
420
444
  switch (state) {
421
445
  case "number":
422
- yield [options.parseFloat(value)];
446
+ yield [NUMBER, options.parseFloat(value)];
423
447
  case undefined:
424
448
  state = c;
425
449
  break;
@@ -460,7 +484,7 @@ export function* tokens(string, options = {}) {
460
484
  case "}":
461
485
  switch (state) {
462
486
  case "number":
463
- yield [options.parseFloat(value)];
487
+ yield [NUMBER, options.parseFloat(value)];
464
488
  case undefined:
465
489
  state = c;
466
490
  break;
@@ -511,7 +535,7 @@ export function* tokens(string, options = {}) {
511
535
  default:
512
536
  switch (state) {
513
537
  case "number":
514
- yield [options.parseFloat(value)];
538
+ yield [NUMBER, options.parseFloat(value)];
515
539
  case undefined:
516
540
  state = "identifier";
517
541
  value = c;
@@ -534,7 +558,7 @@ export function* tokens(string, options = {}) {
534
558
  case "string":
535
559
  throw new Error("unterminated string", { cause: string });
536
560
  case "number":
537
- yield [options.parseFloat(value)];
561
+ yield [NUMBER, options.parseFloat(value)];
538
562
  break;
539
563
  case "identifier":
540
564
  yield keywordOrIdentifier();
@@ -8,7 +8,9 @@ export function tokens(string: string, options?: {}): Generator<any, void, unkno
8
8
  export namespace PLUS {
9
9
  let str: string;
10
10
  }
11
- export namespace MINUS { }
11
+ export namespace MINUS {
12
+ function nud(parser: any): number;
13
+ }
12
14
  export namespace STAR { }
13
15
  export namespace DIVIDE { }
14
16
  export namespace NOT { }
@@ -34,11 +36,14 @@ export namespace DOUBLE_AMPERSAND { }
34
36
  export namespace BAR { }
35
37
  export namespace DOUBLE_BAR { }
36
38
  export namespace IDENTIFIER { }
39
+ export namespace STRING { }
40
+ export namespace NUMBER { }
41
+ export namespace BOOLEAN { }
37
42
  export namespace EOF { }
38
43
  export namespace keywords {
39
- let _true: boolean[];
44
+ let _true: (boolean | Token)[];
40
45
  export { _true as true };
41
- let _false: boolean[];
46
+ let _false: (boolean | Token)[];
42
47
  export { _false as false };
43
48
  }
44
49
  export type Token = {