pacc 8.10.0 → 8.11.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 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)
@@ -164,7 +162,7 @@ const result = expand("${a + 1}",{ root: { a: 2 }});
164
162
  * [Type](#type)
165
163
  * [Properties](#properties-3)
166
164
  * [raiseOnUnknownType](#raiseonunknowntype)
167
- * [Parameters](#parameters-19)
165
+ * [Parameters](#parameters-18)
168
166
 
169
167
  ## AST
170
168
 
@@ -174,14 +172,6 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
174
172
 
175
173
  * `eval` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** 
176
174
 
177
- ## binopError
178
-
179
- ### Parameters
180
-
181
- * `token` **[Token](#token)** 
182
- * `left` **[AST](#ast)** 
183
- * `right` **[AST](#ast)** 
184
-
185
175
  ## prepareAttributesDefinitions
186
176
 
187
177
  Create attributes from its definition.
@@ -661,7 +651,8 @@ Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Globa
661
651
  * `str` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 
662
652
  * `precedence` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** (optional, default `0`)
663
653
  * `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)?** 
654
+ * `led` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** (optional, default `()=>{}`)
655
+ * `nud` (optional, default `()=>{}`)
665
656
 
666
657
  Returns **[Token](#token)** 
667
658
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "8.10.0",
3
+ "version": "8.11.0",
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
@@ -257,6 +257,29 @@ export /** @type {Token} */ const IDENTIFIER = createToken(
257
257
  }
258
258
  );
259
259
 
260
+ export /** @type {Token} */ const STRING = createToken(
261
+ "STRING",
262
+ 0,
263
+ undefined,
264
+ undefined,
265
+ parser => parser.value
266
+ );
267
+
268
+ export /** @type {Token} */ const NUMBER = createToken(
269
+ "NUMBER",
270
+ 0,
271
+ undefined,
272
+ undefined,
273
+ parser => parser.value
274
+ );
275
+ export /** @type {Token} */ const BOOLEAN = createToken(
276
+ "BOOLEAN",
277
+ 0,
278
+ undefined,
279
+ undefined,
280
+ parser => parser.value
281
+ );
282
+
260
283
  export /** @type {Token} */ const EOF = createToken(
261
284
  "EOF",
262
285
  -1,
@@ -268,8 +291,8 @@ export /** @type {Token} */ const EOF = createToken(
268
291
  );
269
292
 
270
293
  export const keywords = {
271
- true: [true],
272
- false: [false]
294
+ true: [BOOLEAN, true],
295
+ false: [BOOLEAN, false]
273
296
  };
274
297
 
275
298
  const esc = {
@@ -331,7 +354,7 @@ export function* tokens(string, options = {}) {
331
354
  case " ":
332
355
  switch (state) {
333
356
  case "number":
334
- yield [options.parseFloat(value)];
357
+ yield [NUMBER, options.parseFloat(value)];
335
358
  state = undefined;
336
359
  case undefined:
337
360
  break;
@@ -360,13 +383,13 @@ export function* tokens(string, options = {}) {
360
383
  case "'":
361
384
  switch (state) {
362
385
  case "number":
363
- yield [options.parseFloat(value)];
386
+ yield [NUMBER,options.parseFloat(value)];
364
387
  case undefined:
365
388
  startString(c);
366
389
  break;
367
390
  case "string":
368
391
  if (c === quote) {
369
- yield [value];
392
+ yield [STRING, value];
370
393
  state = undefined;
371
394
  } else {
372
395
  value += c;
@@ -388,7 +411,7 @@ export function* tokens(string, options = {}) {
388
411
  case "|":
389
412
  switch (state) {
390
413
  case "number":
391
- yield [options.parseFloat(value)];
414
+ yield [NUMBER, options.parseFloat(value)];
392
415
  case undefined:
393
416
  state = c;
394
417
  break;
@@ -419,7 +442,7 @@ export function* tokens(string, options = {}) {
419
442
  case "=":
420
443
  switch (state) {
421
444
  case "number":
422
- yield [options.parseFloat(value)];
445
+ yield [NUMBER, options.parseFloat(value)];
423
446
  case undefined:
424
447
  state = c;
425
448
  break;
@@ -460,7 +483,7 @@ export function* tokens(string, options = {}) {
460
483
  case "}":
461
484
  switch (state) {
462
485
  case "number":
463
- yield [options.parseFloat(value)];
486
+ yield [NUMBER, options.parseFloat(value)];
464
487
  case undefined:
465
488
  state = c;
466
489
  break;
@@ -511,7 +534,7 @@ export function* tokens(string, options = {}) {
511
534
  default:
512
535
  switch (state) {
513
536
  case "number":
514
- yield [options.parseFloat(value)];
537
+ yield [NUMBER, options.parseFloat(value)];
515
538
  case undefined:
516
539
  state = "identifier";
517
540
  value = c;
@@ -534,7 +557,7 @@ export function* tokens(string, options = {}) {
534
557
  case "string":
535
558
  throw new Error("unterminated string", { cause: string });
536
559
  case "number":
537
- yield [options.parseFloat(value)];
560
+ yield [NUMBER, options.parseFloat(value)];
538
561
  break;
539
562
  case "identifier":
540
563
  yield keywordOrIdentifier();
@@ -34,11 +34,14 @@ export namespace DOUBLE_AMPERSAND { }
34
34
  export namespace BAR { }
35
35
  export namespace DOUBLE_BAR { }
36
36
  export namespace IDENTIFIER { }
37
+ export namespace STRING { }
38
+ export namespace NUMBER { }
39
+ export namespace BOOLEAN { }
37
40
  export namespace EOF { }
38
41
  export namespace keywords {
39
- let _true: boolean[];
42
+ let _true: (boolean | Token)[];
40
43
  export { _true as true };
41
- let _false: boolean[];
44
+ let _false: (boolean | Token)[];
42
45
  export { _false as false };
43
46
  }
44
47
  export type Token = {