pacc 2.0.1 → 2.1.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/tokens.mjs +41 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pacc",
3
- "version": "2.0.1",
3
+ "version": "2.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/src/tokens.mjs CHANGED
@@ -1,17 +1,14 @@
1
-
2
-
3
1
  const lookup = {};
4
2
 
5
- function createToken(str)
6
- {
7
- const token = {str};
3
+ function createToken(str) {
4
+ const token = { str };
8
5
  lookup[str] = token;
9
6
  return token;
10
7
  }
11
8
 
12
9
  export const PLUS = createToken("+");
13
10
  export const MINUS = createToken("-");
14
- export const STAR =createToken("*");
11
+ export const STAR = createToken("*");
15
12
  export const DIVIDE = createToken("/");
16
13
  export const NOT = createToken("!");
17
14
  export const NOT_EQUAL = createToken("!=");
@@ -31,10 +28,10 @@ export const COLON = createToken(":");
31
28
  export const SEMICOLON = createToken(";");
32
29
  export const COMMA = createToken(",");
33
30
  export const DOT = createToken(".");
34
- export const AMPERSAND = createToken('&');
35
- export const DOUBLE_AMPERSAND = createToken('&&');
31
+ export const AMPERSAND = createToken("&");
32
+ export const DOUBLE_AMPERSAND = createToken("&&");
36
33
  export const BAR = createToken("|");
37
- export const DOUBLE_BAR = createToken('||');
34
+ export const DOUBLE_BAR = createToken("||");
38
35
 
39
36
  /**
40
37
  * Split property path into tokens
@@ -81,6 +78,7 @@ export function* tokens(string) {
81
78
  case "string":
82
79
  buffer += c;
83
80
  break;
81
+ case "number":
84
82
  case "identifier":
85
83
  yield buffer;
86
84
  buffer = "";
@@ -110,6 +108,7 @@ export function* tokens(string) {
110
108
  yield buffer;
111
109
  state = undefined;
112
110
  break;
111
+ case "number":
113
112
  case "identifier":
114
113
  yield buffer;
115
114
  buffer = "";
@@ -144,6 +143,7 @@ export function* tokens(string) {
144
143
  case "string":
145
144
  buffer += c;
146
145
  break;
146
+ case "number":
147
147
  case "identifier":
148
148
  yield buffer;
149
149
  state = c;
@@ -162,6 +162,7 @@ export function* tokens(string) {
162
162
  case "string":
163
163
  buffer += c;
164
164
  break;
165
+ case "number":
165
166
  case "identifier":
166
167
  yield buffer;
167
168
  state = c;
@@ -191,6 +192,7 @@ export function* tokens(string) {
191
192
  case "string":
192
193
  buffer += c;
193
194
  break;
195
+ case "number":
194
196
  case "identifier":
195
197
  yield buffer;
196
198
  state = c;
@@ -200,6 +202,34 @@ export function* tokens(string) {
200
202
  state = c;
201
203
  }
202
204
  break;
205
+
206
+ case "0":
207
+ case "1":
208
+ case "2":
209
+ case "3":
210
+ case "4":
211
+ case "5":
212
+ case "6":
213
+ case "7":
214
+ case "8":
215
+ case "9":
216
+ switch (state) {
217
+ default:
218
+ yield lookup[state];
219
+ case undefined:
220
+ buffer = c.charCodeAt(0) - "0".charCodeAt(0);
221
+ state = "number";
222
+ break;
223
+ case "number":
224
+ buffer = buffer * 10 + c.charCodeAt(0) - "0".charCodeAt(0);
225
+ break;
226
+ case "string":
227
+ case "identifier":
228
+ buffer += c;
229
+ break;
230
+ }
231
+ break;
232
+
203
233
  default:
204
234
  switch (state) {
205
235
  case undefined:
@@ -211,12 +241,7 @@ export function* tokens(string) {
211
241
  buffer += c;
212
242
  break;
213
243
  default:
214
- if (
215
- (c >= "a" && c <= "z") ||
216
- (c >= "A" && c <= "Z") ||
217
- (c >= "0" && c <= "9") ||
218
- c === "_"
219
- ) {
244
+ if ((c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c === "_") {
220
245
  yield lookup[state];
221
246
  state = "identifier";
222
247
  buffer = c;
@@ -232,6 +257,7 @@ export function* tokens(string) {
232
257
  break;
233
258
  case "string":
234
259
  throw new Error("unterminated string");
260
+ case "number":
235
261
  case "identifier":
236
262
  yield buffer;
237
263
  break;