@calcit/procs 0.5.0-a6 → 0.5.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/lib/calcit-data.js +37 -18
- package/lib/calcit.procs.js +77 -76
- package/lib/custom-formatter.js +11 -11
- package/lib/js-cirru.js +20 -20
- package/lib/js-list.js +190 -117
- package/lib/js-map.js +194 -130
- package/lib/js-record.js +7 -7
- package/lib/js-set.js +5 -5
- package/lib/js-tuple.js +4 -4
- package/package.json +6 -6
- package/ts-src/calcit-data.ts +37 -18
- package/ts-src/calcit.procs.ts +99 -98
- package/ts-src/custom-formatter.ts +10 -10
- package/ts-src/js-cirru.ts +22 -22
- package/ts-src/js-list.ts +195 -121
- package/ts-src/js-map.ts +216 -135
- package/ts-src/js-primes.ts +5 -3
- package/ts-src/js-record.ts +6 -6
- package/ts-src/js-set.ts +18 -5
- package/ts-src/js-tuple.ts +4 -4
package/lib/calcit-data.js
CHANGED
|
@@ -2,9 +2,9 @@ import { overwriteHashGenerator, valueHash, mergeValueHash } from "@calcit/terna
|
|
|
2
2
|
import { overwriteComparator } from "@calcit/ternary-tree";
|
|
3
3
|
import { overwriteMapComparator } from "./js-map";
|
|
4
4
|
import { CalcitRecord, fieldsEqual } from "./js-record";
|
|
5
|
-
import { CalcitMap } from "./js-map";
|
|
5
|
+
import { CalcitMap, CalcitSliceMap } from "./js-map";
|
|
6
6
|
import "./js-primes";
|
|
7
|
-
import { CalcitList } from "./js-list";
|
|
7
|
+
import { CalcitList, CalcitSliceList } from "./js-list";
|
|
8
8
|
import { CalcitSet, overwriteSetComparator } from "./js-set";
|
|
9
9
|
import { CalcitTuple } from "./js-tuple";
|
|
10
10
|
// we have to inject cache in a dirty way in some cases
|
|
@@ -51,10 +51,10 @@ export class CalcitRecur {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
export let isNestedCalcitData = (x) => {
|
|
54
|
-
if (x instanceof CalcitList) {
|
|
54
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
55
55
|
return x.len() > 0;
|
|
56
56
|
}
|
|
57
|
-
if (x instanceof CalcitMap) {
|
|
57
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
58
58
|
return x.len() > 0;
|
|
59
59
|
}
|
|
60
60
|
if (x instanceof CalcitRecord) {
|
|
@@ -66,10 +66,10 @@ export let isNestedCalcitData = (x) => {
|
|
|
66
66
|
return false;
|
|
67
67
|
};
|
|
68
68
|
export let tipNestedCalcitData = (x) => {
|
|
69
|
-
if (x instanceof CalcitList) {
|
|
69
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
70
70
|
return "'[]...";
|
|
71
71
|
}
|
|
72
|
-
if (x instanceof CalcitMap) {
|
|
72
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
73
73
|
return "'{}...";
|
|
74
74
|
}
|
|
75
75
|
if (x instanceof CalcitRecord) {
|
|
@@ -120,9 +120,9 @@ export function findInFields(xs, y) {
|
|
|
120
120
|
return pos;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
if (y
|
|
123
|
+
if (y === xs[lower])
|
|
124
124
|
return lower;
|
|
125
|
-
if (y
|
|
125
|
+
if (y === xs[upper])
|
|
126
126
|
return upper;
|
|
127
127
|
return -1;
|
|
128
128
|
}
|
|
@@ -148,7 +148,7 @@ export let castKwd = (x) => {
|
|
|
148
148
|
if (x instanceof CalcitSymbol) {
|
|
149
149
|
return kwd(x.value);
|
|
150
150
|
}
|
|
151
|
-
throw new Error(
|
|
151
|
+
throw new Error(`Cannot cast this to keyword: ${x}`);
|
|
152
152
|
};
|
|
153
153
|
export var refsRegistry = new Map();
|
|
154
154
|
let defaultHash_nil = valueHash("nil:");
|
|
@@ -229,6 +229,16 @@ let hashFunction = (x) => {
|
|
|
229
229
|
}
|
|
230
230
|
return base;
|
|
231
231
|
}
|
|
232
|
+
if (x instanceof CalcitSliceList) {
|
|
233
|
+
let base = defaultHash_list;
|
|
234
|
+
// low-level code for perf
|
|
235
|
+
for (let idx = x.start; idx < x.end; idx++) {
|
|
236
|
+
let item = x.value[idx];
|
|
237
|
+
base = mergeValueHash(base, hashFunction(item));
|
|
238
|
+
}
|
|
239
|
+
x.cachedHash = base;
|
|
240
|
+
return base;
|
|
241
|
+
}
|
|
232
242
|
if (x instanceof CalcitList) {
|
|
233
243
|
let base = defaultHash_list;
|
|
234
244
|
for (let item of x.items()) {
|
|
@@ -237,6 +247,15 @@ let hashFunction = (x) => {
|
|
|
237
247
|
x.cachedHash = base;
|
|
238
248
|
return base;
|
|
239
249
|
}
|
|
250
|
+
if (x instanceof CalcitSliceMap) {
|
|
251
|
+
let base = defaultHash_map;
|
|
252
|
+
for (let [k, v] of x.pairs()) {
|
|
253
|
+
base = mergeValueHash(base, hashFunction(k));
|
|
254
|
+
base = mergeValueHash(base, hashFunction(v));
|
|
255
|
+
}
|
|
256
|
+
x.cachedHash = base;
|
|
257
|
+
return base;
|
|
258
|
+
}
|
|
240
259
|
if (x instanceof CalcitMap) {
|
|
241
260
|
let base = defaultHash_map;
|
|
242
261
|
for (let [k, v] of x.pairs()) {
|
|
@@ -300,10 +319,10 @@ export let toString = (x, escaped) => {
|
|
|
300
319
|
if (x instanceof CalcitKeyword) {
|
|
301
320
|
return x.toString();
|
|
302
321
|
}
|
|
303
|
-
if (x instanceof CalcitList) {
|
|
322
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
304
323
|
return x.toString();
|
|
305
324
|
}
|
|
306
|
-
if (x instanceof CalcitMap) {
|
|
325
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
307
326
|
return x.toString();
|
|
308
327
|
}
|
|
309
328
|
if (x instanceof CalcitSet) {
|
|
@@ -349,14 +368,14 @@ export let to_js_data = (x, addColon = false) => {
|
|
|
349
368
|
}
|
|
350
369
|
return Symbol(x.value);
|
|
351
370
|
}
|
|
352
|
-
if (x instanceof CalcitList) {
|
|
371
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
353
372
|
var result = [];
|
|
354
373
|
for (let item of x.items()) {
|
|
355
374
|
result.push(to_js_data(item, addColon));
|
|
356
375
|
}
|
|
357
376
|
return result;
|
|
358
377
|
}
|
|
359
|
-
if (x instanceof CalcitMap) {
|
|
378
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
360
379
|
let result = {};
|
|
361
380
|
for (let [k, v] of x.pairs()) {
|
|
362
381
|
var key = to_js_data(k, addColon);
|
|
@@ -390,7 +409,7 @@ export let _$n_map_$o_get = function (xs, k) {
|
|
|
390
409
|
if (arguments.length !== 2) {
|
|
391
410
|
throw new Error("map &get takes 2 arguments");
|
|
392
411
|
}
|
|
393
|
-
if (xs instanceof CalcitMap)
|
|
412
|
+
if (xs instanceof CalcitMap || xs instanceof CalcitSliceMap)
|
|
394
413
|
return xs.get(k);
|
|
395
414
|
throw new Error("Does not support `&get` on this type");
|
|
396
415
|
};
|
|
@@ -434,8 +453,8 @@ export let _$n__$e_ = (x, y) => {
|
|
|
434
453
|
}
|
|
435
454
|
return false;
|
|
436
455
|
}
|
|
437
|
-
if (x instanceof CalcitList) {
|
|
438
|
-
if (y instanceof CalcitList) {
|
|
456
|
+
if (x instanceof CalcitList || x instanceof CalcitSliceList) {
|
|
457
|
+
if (y instanceof CalcitList || y instanceof CalcitSliceList) {
|
|
439
458
|
if (x.len() !== y.len()) {
|
|
440
459
|
return false;
|
|
441
460
|
}
|
|
@@ -451,8 +470,8 @@ export let _$n__$e_ = (x, y) => {
|
|
|
451
470
|
}
|
|
452
471
|
return false;
|
|
453
472
|
}
|
|
454
|
-
if (x instanceof CalcitMap) {
|
|
455
|
-
if (y instanceof CalcitMap) {
|
|
473
|
+
if (x instanceof CalcitMap || x instanceof CalcitSliceMap) {
|
|
474
|
+
if (y instanceof CalcitMap || y instanceof CalcitSliceMap) {
|
|
456
475
|
if (x.len() !== y.len()) {
|
|
457
476
|
return false;
|
|
458
477
|
}
|