pacc 1.0.4 → 2.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "1.0.4",
3
+ "version": "2.0.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/attribute.mjs CHANGED
@@ -13,9 +13,20 @@
13
13
  * @property {string[]|string} [env] environment variable use to provide the value
14
14
  */
15
15
 
16
- import { tokens } from "./tokens.mjs";
17
-
18
- export { tokens };
16
+ import {
17
+ tokens,
18
+ EQUAL,
19
+ NOT_EQUAL,
20
+ DOT,
21
+ OPEN_BRACKET,
22
+ CLOSE_BRACKET,
23
+ LESS,
24
+ LESS_EQUAL,
25
+ GREATER,
26
+ GREATER_EQUAL,
27
+ STAR
28
+ } from "./tokens.mjs";
29
+ export * from "./tokens.mjs";
19
30
 
20
31
  /**
21
32
  * Set Object attribute.
@@ -30,9 +41,9 @@ export function setAttribute(object, expression, value) {
30
41
 
31
42
  for (const token of tokens(expression)) {
32
43
  switch (token) {
33
- case ".":
34
- case "[":
35
- case "]":
44
+ case DOT:
45
+ case OPEN_BRACKET:
46
+ case CLOSE_BRACKET:
36
47
  break;
37
48
 
38
49
  default:
@@ -75,24 +86,24 @@ export function getAttribute(object, expression) {
75
86
  * @returns {[any,string]} value associated with the given property name
76
87
  */
77
88
  export function getAttributeAndOperator(object, expression, getters = {}) {
78
- let op = "=";
89
+ let op = EQUAL;
79
90
  let predicateTokens;
80
91
 
81
92
  for (const token of tokens(expression)) {
82
93
  switch (token) {
83
- case ">=":
84
- case "<=":
85
- case ">":
86
- case "<":
87
- case "=":
88
- case "!=":
94
+ case GREATER_EQUAL:
95
+ case LESS_EQUAL:
96
+ case GREATER:
97
+ case LESS:
98
+ case EQUAL:
99
+ case NOT_EQUAL:
89
100
  op = token;
90
101
  break;
91
- case ".":
92
- case "[":
102
+ case DOT:
103
+ case OPEN_BRACKET:
93
104
  predicateTokens = [];
94
105
  break;
95
- case "]":
106
+ case CLOSE_BRACKET:
96
107
  // TODO: should loop over array actually getAttribute api should deliver iterators
97
108
  if (object[Symbol.iterator]) {
98
109
  object = [...object][0];
@@ -100,7 +111,7 @@ export function getAttributeAndOperator(object, expression, getters = {}) {
100
111
 
101
112
  predicateTokens = undefined;
102
113
  break;
103
- case "*":
114
+ case STAR:
104
115
  predicateTokens.push(token);
105
116
  break;
106
117
 
package/src/tokens.mjs CHANGED
@@ -1,3 +1,41 @@
1
+
2
+
3
+ const lookup = {};
4
+
5
+ function createToken(str)
6
+ {
7
+ const token = {str};
8
+ lookup[str] = token;
9
+ return token;
10
+ }
11
+
12
+ export const PLUS = createToken("+");
13
+ export const MINUS = createToken("-");
14
+ export const STAR =createToken("*");
15
+ export const DIVIDE = createToken("/");
16
+ export const NOT = createToken("!");
17
+ export const NOT_EQUAL = createToken("!=");
18
+ export const GREATER = createToken(">");
19
+ export const GREATER_EQUAL = createToken(">=");
20
+ export const LESS = createToken("<");
21
+ export const LESS_EQUAL = createToken("<=");
22
+ export const EQUAL = createToken("=");
23
+ export const OPEN_ROUND = createToken("(");
24
+ export const CLOSE_ROUND = createToken(")");
25
+ export const OPEN_BRACKET = createToken("[");
26
+ export const CLOSE_BRACKET = createToken("]");
27
+ export const OPEN_CURLY = createToken("{");
28
+ export const CLOSE_CURLY = createToken("}");
29
+ export const QUESTION = createToken("?");
30
+ export const COLON = createToken(":");
31
+ export const SEMICOLON = createToken(";");
32
+ export const COMMA = createToken(",");
33
+ export const DOT = createToken(".");
34
+ export const AMPERSAND = createToken('&');
35
+ export const DOUBLE_AMPERSAND = createToken('&&');
36
+ export const BAR = createToken("|");
37
+ export const DOUBLE_BAR = createToken('||');
38
+
1
39
  /**
2
40
  * Split property path into tokens
3
41
  * @generator
@@ -49,7 +87,7 @@ export function* tokens(string) {
49
87
  state = undefined;
50
88
  break;
51
89
  default:
52
- yield state;
90
+ yield lookup[state];
53
91
  state = undefined;
54
92
  }
55
93
  break;
@@ -78,7 +116,7 @@ export function* tokens(string) {
78
116
  state = "string";
79
117
  break;
80
118
  default:
81
- yield state;
119
+ yield lookup[state];
82
120
  buffer = "";
83
121
  state = "string";
84
122
  }
@@ -92,10 +130,11 @@ export function* tokens(string) {
92
130
  case "&":
93
131
  case "|":
94
132
  if (state === c) {
95
- yield state + c;
133
+ state += c;
134
+ yield lookup[state];
96
135
  state = undefined;
97
136
  } else {
98
- yield state;
137
+ yield lookup[state];
99
138
  state = c;
100
139
  }
101
140
  break;
@@ -110,7 +149,7 @@ export function* tokens(string) {
110
149
  state = c;
111
150
  break;
112
151
  default:
113
- yield state;
152
+ yield lookup[state];
114
153
  state = c;
115
154
  }
116
155
  break;
@@ -157,7 +196,7 @@ export function* tokens(string) {
157
196
  state = c;
158
197
  break;
159
198
  default:
160
- yield state;
199
+ yield lookup[state];
161
200
  state = c;
162
201
  }
163
202
  break;
@@ -178,7 +217,7 @@ export function* tokens(string) {
178
217
  (c >= "0" && c <= "9") ||
179
218
  c === "_"
180
219
  ) {
181
- yield state;
220
+ yield lookup[state];
182
221
  state = "identifier";
183
222
  buffer = c;
184
223
  } else {
@@ -197,6 +236,6 @@ export function* tokens(string) {
197
236
  yield buffer;
198
237
  break;
199
238
  default:
200
- yield state;
239
+ yield lookup[state];
201
240
  }
202
241
  }