@calcit/procs 0.8.8 → 0.8.9

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.
@@ -1,6 +1,6 @@
1
1
  var _a;
2
2
  // CALCIT VERSION
3
- export const calcit_version = "0.8.8";
3
+ export const calcit_version = "0.8.9";
4
4
  import { parse } from "@cirru/parser.ts";
5
5
  import { writeCirruCode } from "@cirru/writer.ts";
6
6
  import { CalcitSymbol, CalcitTag, CalcitRef, CalcitRecur, newTag, refsRegistry, toString, getStringName, _$n__$e_, hashFunction, } from "./calcit-data.mjs";
@@ -1377,6 +1377,22 @@ export let _$n_buffer = (...xs) => {
1377
1377
  }
1378
1378
  return buf;
1379
1379
  };
1380
+ export let _$n_cirru_nth = (xs, idx) => {
1381
+ if (xs instanceof CalcitCirruQuote) {
1382
+ return xs.nth(idx);
1383
+ }
1384
+ else {
1385
+ throw new Error("Expected a Cirru Quote");
1386
+ }
1387
+ };
1388
+ export let _$n_cirru_type = (xs, idx) => {
1389
+ if (xs instanceof CalcitCirruQuote) {
1390
+ return Array.isArray(xs.value) ? newTag("list") : newTag("leaf");
1391
+ }
1392
+ else {
1393
+ throw new Error("Expected a Cirru Quote");
1394
+ }
1395
+ };
1380
1396
  export let _$n_hash = (x) => {
1381
1397
  return hashFunction(x);
1382
1398
  };
package/lib/js-cirru.mjs CHANGED
@@ -9,6 +9,9 @@ import { CalcitTuple } from "./js-tuple.mjs";
9
9
  import { deepEqual } from "@calcit/ternary-tree/lib/utils.mjs";
10
10
  export class CalcitCirruQuote {
11
11
  constructor(value) {
12
+ if (value == null) {
13
+ throw new Error("cirru node cannot be null");
14
+ }
12
15
  this.value = value;
13
16
  }
14
17
  toString() {
@@ -17,6 +20,19 @@ export class CalcitCirruQuote {
17
20
  toList() {
18
21
  return to_calcit_data(this.value, true);
19
22
  }
23
+ nth(idx) {
24
+ if (Array.isArray(this.value)) {
25
+ if (idx < this.value.length) {
26
+ return new CalcitCirruQuote(this.value[idx]);
27
+ }
28
+ else {
29
+ throw new Error(`nth out of range: ${idx}`);
30
+ }
31
+ }
32
+ else {
33
+ throw new Error(`&cirru-nth does not read into a string: ${this.value}`);
34
+ }
35
+ }
20
36
  /** provide a simple text representation in Console or std out, with indentations */
21
37
  textForm() {
22
38
  if (Array.isArray(this.value) && this.value.every((x) => Array.isArray(x))) {
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@calcit/procs",
3
- "version": "0.8.8",
3
+ "version": "0.8.9",
4
4
  "main": "./lib/calcit.procs.mjs",
5
5
  "devDependencies": {
6
- "@types/node": "^20.6.2",
6
+ "@types/node": "^20.8.6",
7
7
  "typescript": "^5.2.2"
8
8
  },
9
9
  "scripts": {
@@ -1,5 +1,5 @@
1
1
  // CALCIT VERSION
2
- export const calcit_version = "0.8.8";
2
+ export const calcit_version = "0.8.9";
3
3
 
4
4
  import { parse, ICirruNode } from "@cirru/parser.ts";
5
5
  import { writeCirruCode } from "@cirru/writer.ts";
@@ -1475,6 +1475,22 @@ export let _$n_buffer = (...xs: CalcitValue[]): Uint8Array => {
1475
1475
  return buf;
1476
1476
  };
1477
1477
 
1478
+ export let _$n_cirru_nth = (xs: CalcitCirruQuote, idx: number) => {
1479
+ if (xs instanceof CalcitCirruQuote) {
1480
+ return xs.nth(idx);
1481
+ } else {
1482
+ throw new Error("Expected a Cirru Quote");
1483
+ }
1484
+ };
1485
+
1486
+ export let _$n_cirru_type = (xs: CalcitCirruQuote, idx: number) => {
1487
+ if (xs instanceof CalcitCirruQuote) {
1488
+ return Array.isArray(xs.value) ? newTag("list") : newTag("leaf");
1489
+ } else {
1490
+ throw new Error("Expected a Cirru Quote");
1491
+ }
1492
+ };
1493
+
1478
1494
  export let _$n_hash = (x: CalcitValue): number => {
1479
1495
  return hashFunction(x);
1480
1496
  };
@@ -15,6 +15,9 @@ type CirruEdnFormat = string | CirruEdnFormat[];
15
15
  export class CalcitCirruQuote {
16
16
  value: CirruWriterNode;
17
17
  constructor(value: CirruWriterNode) {
18
+ if (value == null) {
19
+ throw new Error("cirru node cannot be null");
20
+ }
18
21
  this.value = value;
19
22
  }
20
23
  toString(): string {
@@ -23,6 +26,17 @@ export class CalcitCirruQuote {
23
26
  toList(): CalcitValue {
24
27
  return to_calcit_data(this.value, true);
25
28
  }
29
+ nth(idx: number): CalcitValue {
30
+ if (Array.isArray(this.value)) {
31
+ if (idx < this.value.length) {
32
+ return new CalcitCirruQuote(this.value[idx]);
33
+ } else {
34
+ throw new Error(`nth out of range: ${idx}`);
35
+ }
36
+ } else {
37
+ throw new Error(`&cirru-nth does not read into a string: ${this.value}`);
38
+ }
39
+ }
26
40
  /** provide a simple text representation in Console or std out, with indentations */
27
41
  textForm(): string {
28
42
  if (Array.isArray(this.value) && this.value.every((x) => Array.isArray(x))) {