pacc 6.7.3 → 6.8.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 +1 -1
- package/src/expand.mjs +3 -2
- package/src/tokens.mjs +24 -29
package/package.json
CHANGED
package/src/expand.mjs
CHANGED
|
@@ -41,7 +41,7 @@ export function expand(object, context = {}) {
|
|
|
41
41
|
|
|
42
42
|
let value = parse(expression, context);
|
|
43
43
|
if (value === undefined) {
|
|
44
|
-
result += object.substring(
|
|
44
|
+
result += object.substring(cur, end + leadOut.length);
|
|
45
45
|
} else {
|
|
46
46
|
if (typeof value === "string") {
|
|
47
47
|
value = _expand(value, path);
|
|
@@ -60,7 +60,8 @@ export function expand(object, context = {}) {
|
|
|
60
60
|
cur = end + leadOut.length;
|
|
61
61
|
} else {
|
|
62
62
|
throw new Error(
|
|
63
|
-
`Unterminated expression between '${leadIn}' and '${leadOut}'
|
|
63
|
+
`Unterminated expression between '${leadIn}' and '${leadOut}'`,
|
|
64
|
+
{ cause: object }
|
|
64
65
|
);
|
|
65
66
|
}
|
|
66
67
|
}
|
package/src/tokens.mjs
CHANGED
|
@@ -77,7 +77,7 @@ const esc = {
|
|
|
77
77
|
* @yields {Token}
|
|
78
78
|
*/
|
|
79
79
|
export function* tokens(string) {
|
|
80
|
-
let state, value, hex,
|
|
80
|
+
let state, value, hex, quote;
|
|
81
81
|
|
|
82
82
|
const keywordOrIdentifier = () => keywords[value] || [IDENTIFIER, value];
|
|
83
83
|
const startString = c => {
|
|
@@ -116,8 +116,7 @@ export function* tokens(string) {
|
|
|
116
116
|
case " ":
|
|
117
117
|
switch (state) {
|
|
118
118
|
case "number":
|
|
119
|
-
|
|
120
|
-
yield [value];
|
|
119
|
+
yield [parseFloat(value)];
|
|
121
120
|
state = undefined;
|
|
122
121
|
case undefined:
|
|
123
122
|
break;
|
|
@@ -146,8 +145,7 @@ export function* tokens(string) {
|
|
|
146
145
|
case "'":
|
|
147
146
|
switch (state) {
|
|
148
147
|
case "number":
|
|
149
|
-
|
|
150
|
-
yield [value];
|
|
148
|
+
yield [parseFloat(value)];
|
|
151
149
|
case undefined:
|
|
152
150
|
startString(c);
|
|
153
151
|
break;
|
|
@@ -175,8 +173,7 @@ export function* tokens(string) {
|
|
|
175
173
|
case "|":
|
|
176
174
|
switch (state) {
|
|
177
175
|
case "number":
|
|
178
|
-
|
|
179
|
-
yield [value];
|
|
176
|
+
yield [parseFloat(value)];
|
|
180
177
|
case undefined:
|
|
181
178
|
state = c;
|
|
182
179
|
break;
|
|
@@ -207,8 +204,7 @@ export function* tokens(string) {
|
|
|
207
204
|
case "=":
|
|
208
205
|
switch (state) {
|
|
209
206
|
case "number":
|
|
210
|
-
|
|
211
|
-
yield [value];
|
|
207
|
+
yield [parseFloat(value)];
|
|
212
208
|
case undefined:
|
|
213
209
|
state = c;
|
|
214
210
|
break;
|
|
@@ -223,17 +219,23 @@ export function* tokens(string) {
|
|
|
223
219
|
state += c;
|
|
224
220
|
}
|
|
225
221
|
break;
|
|
222
|
+
|
|
226
223
|
case ".":
|
|
227
224
|
if (state === "number") {
|
|
228
|
-
|
|
229
|
-
|
|
225
|
+
value += '.';
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
else if (state === "-") {
|
|
229
|
+
value = '-.';
|
|
230
|
+
state="number";
|
|
230
231
|
break;
|
|
231
232
|
}
|
|
233
|
+
|
|
234
|
+
case "-":
|
|
232
235
|
case ":":
|
|
233
236
|
case ";":
|
|
234
237
|
case ",":
|
|
235
238
|
case "+":
|
|
236
|
-
case "-":
|
|
237
239
|
case "*":
|
|
238
240
|
case "/":
|
|
239
241
|
case "(":
|
|
@@ -244,8 +246,7 @@ export function* tokens(string) {
|
|
|
244
246
|
case "}":
|
|
245
247
|
switch (state) {
|
|
246
248
|
case "number":
|
|
247
|
-
|
|
248
|
-
yield [value];
|
|
249
|
+
yield [parseFloat(value)];
|
|
249
250
|
case undefined:
|
|
250
251
|
state = c;
|
|
251
252
|
break;
|
|
@@ -275,21 +276,17 @@ export function* tokens(string) {
|
|
|
275
276
|
default:
|
|
276
277
|
yield lookup[state];
|
|
277
278
|
case undefined:
|
|
278
|
-
value = c
|
|
279
|
+
value = c;
|
|
279
280
|
state = "number";
|
|
280
281
|
break;
|
|
282
|
+
case "-":
|
|
283
|
+
state = "number";
|
|
284
|
+
value = "-" + c;
|
|
285
|
+
break;
|
|
281
286
|
case ".":
|
|
282
|
-
state = "number
|
|
283
|
-
value =
|
|
284
|
-
divider = 10;
|
|
285
|
-
case "number-fraction":
|
|
286
|
-
value = value + (c.charCodeAt(0) - 48) / divider;
|
|
287
|
-
divider *= 10;
|
|
288
|
-
break;
|
|
287
|
+
state = "number";
|
|
288
|
+
value = ".";
|
|
289
289
|
case "number":
|
|
290
|
-
// @ts-ignore
|
|
291
|
-
value = value * 10 + c.charCodeAt(0) - 48;
|
|
292
|
-
break;
|
|
293
290
|
case "string":
|
|
294
291
|
case "identifier":
|
|
295
292
|
value += c;
|
|
@@ -300,8 +297,7 @@ export function* tokens(string) {
|
|
|
300
297
|
default:
|
|
301
298
|
switch (state) {
|
|
302
299
|
case "number":
|
|
303
|
-
|
|
304
|
-
yield [value];
|
|
300
|
+
yield [parseFloat(value)];
|
|
305
301
|
case undefined:
|
|
306
302
|
state = "identifier";
|
|
307
303
|
value = c;
|
|
@@ -323,9 +319,8 @@ export function* tokens(string) {
|
|
|
323
319
|
break;
|
|
324
320
|
case "string":
|
|
325
321
|
throw new Error("unterminated string", { cause: string });
|
|
326
|
-
case "number-fraction":
|
|
327
322
|
case "number":
|
|
328
|
-
yield [value];
|
|
323
|
+
yield [parseFloat(value)];
|
|
329
324
|
break;
|
|
330
325
|
case "identifier":
|
|
331
326
|
yield keywordOrIdentifier();
|