hclang 0.1.0 → 0.5.3

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 (153) hide show
  1. package/README.md +25 -3
  2. package/lib/src/cli/bin.js +4 -0
  3. package/lib/src/cli/hc.js +45 -0
  4. package/lib/src/execute/eval-pipe.js +15 -0
  5. package/lib/src/execute/evaluate.js +10 -0
  6. package/lib/src/execute/execute.js +18 -0
  7. package/lib/src/execute/frame-space.js +17 -0
  8. package/lib/src/execute/hc-eval.js +105 -0
  9. package/lib/src/execute/hc-log.js +39 -0
  10. package/lib/src/execute/hc-test.js +43 -0
  11. package/lib/src/execute/lex-bytes.js +42 -0
  12. package/lib/src/execute/lex-pipe.js +56 -0
  13. package/lib/src/execute/lex.js +110 -0
  14. package/lib/src/execute/lexer.js +24 -0
  15. package/lib/src/execute/parse-pipe.js +52 -0
  16. package/lib/src/execute/syntax.js +36 -0
  17. package/lib/src/execute/terminals.js +54 -0
  18. package/lib/src/execute.js +3 -0
  19. package/lib/src/frames/frame-alias.js +45 -0
  20. package/lib/src/frames/frame-arg.js +62 -0
  21. package/lib/src/frames/frame-array.js +47 -0
  22. package/lib/src/frames/frame-atom.js +41 -0
  23. package/lib/src/frames/frame-blob.js +104 -0
  24. package/lib/src/frames/frame-bytes.js +31 -0
  25. package/lib/src/frames/frame-comment.js +28 -0
  26. package/lib/src/frames/frame-doc.js +19 -0
  27. package/lib/src/frames/frame-expr.js +34 -0
  28. package/lib/src/frames/frame-group.js +31 -0
  29. package/lib/src/frames/frame-lazy.js +39 -0
  30. package/lib/src/frames/frame-list.js +58 -0
  31. package/lib/src/frames/frame-name.js +29 -0
  32. package/lib/src/frames/frame-note.js +104 -0
  33. package/lib/src/frames/frame-number.js +28 -0
  34. package/lib/src/frames/frame-schema.js +47 -0
  35. package/lib/src/frames/frame-string.js +41 -0
  36. package/lib/src/frames/frame-symbol.js +75 -0
  37. package/lib/src/frames/frame.js +75 -0
  38. package/lib/src/frames/meta-frame.js +99 -0
  39. package/lib/src/frames.js +24 -0
  40. package/lib/src/index.js +5 -0
  41. package/lib/src/maml/tag.js +17 -0
  42. package/lib/src/maml.js +26 -0
  43. package/lib/src/ops/conditionals.js +14 -0
  44. package/lib/src/ops/frame-curry.js +17 -0
  45. package/lib/src/ops/frame-ops.js +24 -0
  46. package/lib/src/ops/iterators.js +28 -0
  47. package/lib/src/ops.js +12 -0
  48. package/lib/src/version.js +3 -0
  49. package/lib/test/execute/eval-pipe-spec.js +45 -0
  50. package/lib/test/execute/evaluate-spec.js +76 -0
  51. package/lib/test/execute/execute-spec.js +115 -0
  52. package/lib/test/execute/hc-eval-spec.js +68 -0
  53. package/lib/test/execute/hc-test-spec.js +47 -0
  54. package/lib/test/execute/lex-pipe-spec.js +25 -0
  55. package/lib/test/execute/parse-spec.js +67 -0
  56. package/lib/test/execute/script-spec.js +29 -0
  57. package/lib/test/frames/frame-alias-spec.js +36 -0
  58. package/lib/test/frames/frame-arg-spec.js +57 -0
  59. package/lib/test/frames/frame-array-spec.js +54 -0
  60. package/lib/test/frames/frame-blob-spec.js +56 -0
  61. package/lib/test/frames/frame-bytes-spec.js +16 -0
  62. package/lib/test/frames/frame-comment-spec.js +17 -0
  63. package/lib/test/frames/frame-expr-spec.js +60 -0
  64. package/lib/test/frames/frame-group-spec.js +27 -0
  65. package/lib/test/frames/frame-lazy-spec.js +49 -0
  66. package/lib/test/frames/frame-name-spec.js +26 -0
  67. package/lib/test/frames/frame-note-spec.js +48 -0
  68. package/lib/test/frames/frame-number-spec.js +17 -0
  69. package/lib/test/frames/frame-schema-spec.js +54 -0
  70. package/lib/test/frames/frame-spec.js +31 -0
  71. package/lib/test/frames/frame-string-spec.js +43 -0
  72. package/lib/test/frames/frame-symbol-spec.js +64 -0
  73. package/lib/test/frames/meta-frame-spec.js +75 -0
  74. package/lib/test/maml/maml-spec.js +42 -0
  75. package/lib/test/maml/tag-spec.js +53 -0
  76. package/lib/test/ops/iterators-spec.js +70 -0
  77. package/package.json +61 -34
  78. package/lib/bin.d.ts +0 -0
  79. package/lib/bin.js +0 -6
  80. package/lib/execute/actions.d.ts +0 -13
  81. package/lib/execute/actions.js +0 -48
  82. package/lib/execute/eval-pipe.d.ts +0 -5
  83. package/lib/execute/eval-pipe.js +0 -32
  84. package/lib/execute/evaluate.d.ts +0 -2
  85. package/lib/execute/evaluate.js +0 -20
  86. package/lib/execute/frame-space.d.ts +0 -7
  87. package/lib/execute/frame-space.js +0 -32
  88. package/lib/execute/group-pipe.d.ts +0 -6
  89. package/lib/execute/group-pipe.js +0 -27
  90. package/lib/execute/lex-pipe.d.ts +0 -12
  91. package/lib/execute/lex-pipe.js +0 -55
  92. package/lib/execute/lex.d.ts +0 -26
  93. package/lib/execute/lex.js +0 -94
  94. package/lib/execute/lexer.d.ts +0 -9
  95. package/lib/execute/lexer.js +0 -55
  96. package/lib/execute/parse-pipe.d.ts +0 -8
  97. package/lib/execute/parse-pipe.js +0 -49
  98. package/lib/execute/parser.d.ts +0 -8
  99. package/lib/execute/parser.js +0 -49
  100. package/lib/execute/syntax.d.ts +0 -2
  101. package/lib/execute/syntax.js +0 -23
  102. package/lib/execute/terminals.d.ts +0 -10
  103. package/lib/execute/terminals.js +0 -48
  104. package/lib/execute.d.ts +0 -1
  105. package/lib/execute.js +0 -9
  106. package/lib/frames/frame-arg.d.ts +0 -24
  107. package/lib/frames/frame-arg.js +0 -81
  108. package/lib/frames/frame-array.d.ts +0 -15
  109. package/lib/frames/frame-array.js +0 -50
  110. package/lib/frames/frame-atom.d.ts +0 -17
  111. package/lib/frames/frame-atom.js +0 -52
  112. package/lib/frames/frame-comment.d.ts +0 -12
  113. package/lib/frames/frame-comment.js +0 -36
  114. package/lib/frames/frame-doc.d.ts +0 -9
  115. package/lib/frames/frame-doc.js +0 -31
  116. package/lib/frames/frame-expr.d.ts +0 -9
  117. package/lib/frames/frame-expr.js +0 -48
  118. package/lib/frames/frame-group.d.ts +0 -7
  119. package/lib/frames/frame-group.js +0 -39
  120. package/lib/frames/frame-lazy.d.ts +0 -13
  121. package/lib/frames/frame-lazy.js +0 -54
  122. package/lib/frames/frame-list.d.ts +0 -15
  123. package/lib/frames/frame-list.js +0 -51
  124. package/lib/frames/frame-name.d.ts +0 -12
  125. package/lib/frames/frame-name.js +0 -37
  126. package/lib/frames/frame-number.d.ts +0 -9
  127. package/lib/frames/frame-number.js +0 -31
  128. package/lib/frames/frame-string.d.ts +0 -14
  129. package/lib/frames/frame-string.js +0 -47
  130. package/lib/frames/frame-symbol.d.ts +0 -18
  131. package/lib/frames/frame-symbol.js +0 -64
  132. package/lib/frames/frame.d.ts +0 -22
  133. package/lib/frames/frame.js +0 -73
  134. package/lib/frames/meta-frame.d.ts +0 -26
  135. package/lib/frames/meta-frame.js +0 -85
  136. package/lib/frames.d.ts +0 -15
  137. package/lib/frames.js +0 -36
  138. package/lib/hc.d.ts +0 -0
  139. package/lib/hc.js +0 -13
  140. package/lib/index.d.ts +0 -3
  141. package/lib/index.js +0 -9
  142. package/lib/maml/tag.d.ts +0 -2
  143. package/lib/maml/tag.js +0 -19
  144. package/lib/maml.d.ts +0 -2
  145. package/lib/maml.js +0 -30
  146. package/lib/ops/frame-curry.d.ts +0 -9
  147. package/lib/ops/frame-curry.js +0 -31
  148. package/lib/ops/frame-ops.d.ts +0 -12
  149. package/lib/ops/frame-ops.js +0 -41
  150. package/lib/ops/iterators.d.ts +0 -2
  151. package/lib/ops/iterators.js +0 -12
  152. package/lib/ops.d.ts +0 -3
  153. package/lib/ops.js +0 -8
@@ -0,0 +1,39 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameExpr } from './frame-expr.js';
3
+ import { NilContext } from './meta-frame.js';
4
+ export class FrameLazy extends FrameExpr {
5
+ constructor(data, meta = NilContext) {
6
+ super(data, meta);
7
+ }
8
+ string_open() {
9
+ return FrameLazy.LAZY_BEGIN;
10
+ }
11
+ ;
12
+ string_close() {
13
+ return FrameLazy.LAZY_END;
14
+ }
15
+ ;
16
+ in(contexts = [Frame.nil]) {
17
+ if (this.data.length === 0) {
18
+ return this;
19
+ }
20
+ const expr = new FrameExpr(this.data, this.meta_for(contexts[0]));
21
+ expr.up = this;
22
+ return expr;
23
+ }
24
+ call(argument, parameter = Frame.nil) {
25
+ return new FrameExpr(argument.asArray(), this.meta_for(argument));
26
+ }
27
+ meta_for(context) {
28
+ const MetaNew = this.meta_copy();
29
+ const pairs = context.meta_pairs();
30
+ pairs.forEach(([key, value]) => {
31
+ MetaNew[key] = value;
32
+ });
33
+ return MetaNew;
34
+ }
35
+ }
36
+ FrameLazy.LAZY_BEGIN = '{';
37
+ FrameLazy.LAZY_END = '}';
38
+ ;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRXBFLE1BQU0sT0FBTyxTQUFVLFNBQVEsU0FBUztJQUl0QyxZQUFhLElBQWtCLEVBQUUsT0FBZ0IsVUFBVTtRQUN6RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQTtJQUM3QixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFBO0lBQzNCLENBQUM7SUFBQSxDQUFDO0lBRUssRUFBRSxDQUFFLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUE7U0FDWjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFBO1FBQ2QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sSUFBSSxDQUFFLFFBQWUsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQUc7UUFDakQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFUyxRQUFRLENBQUUsT0FBYztRQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDaEMsTUFBTSxLQUFLLEdBQXlCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUN4RCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQzs7QUFuQ3NCLG9CQUFVLEdBQUcsR0FBRyxDQUFBO0FBQ2hCLGtCQUFRLEdBQUcsR0FBRyxDQUFBO0FBbUN0QyxDQUFDIn0=
@@ -0,0 +1,58 @@
1
+ import { Frame } from './frame.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ const stripLastComma = (result) => {
4
+ if (!result || result.length < 1) {
5
+ return result;
6
+ }
7
+ const n = result.length - 1;
8
+ const last = result[n];
9
+ const n_last = last.length - 1;
10
+ if (last[n_last] === ',') {
11
+ result[n] = last.substring(0, n_last);
12
+ }
13
+ return result;
14
+ };
15
+ export class FrameList extends Frame {
16
+ constructor(data, meta = NilContext) {
17
+ super(meta);
18
+ this.data = data;
19
+ }
20
+ string_open() {
21
+ return Frame.BEGIN_EXPR;
22
+ }
23
+ ;
24
+ string_close() {
25
+ return Frame.END_EXPR;
26
+ }
27
+ ;
28
+ toStringDataArray() {
29
+ const result = this.data.map((obj) => {
30
+ const sep = (obj.is.statement) ? ';' : ',';
31
+ return obj.toString() + sep;
32
+ });
33
+ return result;
34
+ }
35
+ ;
36
+ toStringArray() {
37
+ const result = this.toStringDataArray();
38
+ if (this.meta_length() > 0) {
39
+ result.push(this.meta_string());
40
+ return result;
41
+ }
42
+ return stripLastComma(result);
43
+ }
44
+ toString() {
45
+ return this.string_open() + this.toStringArray().join(' ') + this.string_close();
46
+ }
47
+ asArray() {
48
+ return this.data;
49
+ }
50
+ size() {
51
+ return this.data.length;
52
+ }
53
+ array_eval(contexts) {
54
+ contexts.push(this);
55
+ return this.data.map((f) => f.in(contexts));
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQU1yRCxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtJQUMvQyxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sTUFBTSxDQUFBO0tBQ2Q7SUFDRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUMzQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFO1FBQ3hCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTtLQUN0QztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQXVCLElBQWtCLEVBQUUsSUFBSSxHQUFHLFVBQVU7UUFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBYztJQUV6QyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUE7SUFDekIsQ0FBQztJQUFBLENBQUM7SUFFSyxZQUFZO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQTtJQUN2QixDQUFDO0lBQUEsQ0FBQztJQUVLLGlCQUFpQjtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7WUFDMUMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQWE7UUFDbEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7WUFDL0IsT0FBTyxNQUFNLENBQUE7U0FDZDtRQUNELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDbEYsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVNLElBQUk7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3pCLENBQUM7SUFFUyxVQUFVLENBQUUsUUFBc0I7UUFDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDcEQsQ0FBQztDQUNGIn0=
@@ -0,0 +1,29 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameAtom } from './frame-atom.js';
3
+ import { FrameOperator, FrameSymbol } from './frame-symbol.js';
4
+ import { NilContext } from './meta-frame.js';
5
+ export class FrameName extends FrameAtom {
6
+ constructor(source, meta = NilContext) {
7
+ super(meta);
8
+ this.data = FrameSymbol.for(source);
9
+ }
10
+ in(contexts = [Frame.nil]) {
11
+ const out = contexts[0];
12
+ const setter = this.data.setter(out);
13
+ return setter;
14
+ }
15
+ string_prefix() {
16
+ return FrameName.NAME_BEGIN;
17
+ }
18
+ ;
19
+ canInclude(char) {
20
+ return FrameSymbol.SYMBOL_CHAR.test(char) ||
21
+ FrameOperator.OPERATOR_CHAR.test(char);
22
+ }
23
+ toData() {
24
+ return this.data;
25
+ }
26
+ }
27
+ FrameName.NAME_BEGIN = '.';
28
+ ;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sU0FBVSxTQUFRLFNBQVM7SUFLdEMsWUFBYSxNQUFjLEVBQUUsSUFBSSxHQUFHLFVBQVU7UUFDNUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFTSxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDcEMsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUE7SUFDN0IsQ0FBQztJQUFBLENBQUM7SUFFSyxVQUFVLENBQUUsSUFBWTtRQUM3QixPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRVMsTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDOztBQTFCc0Isb0JBQVUsR0FBRyxHQUFHLENBQUE7QUEyQnhDLENBQUMifQ==
@@ -0,0 +1,104 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameArray } from './frame-array.js';
3
+ import { FrameQuote } from './frame-atom.js';
4
+ import { FrameString } from './frame-string.js';
5
+ import { FrameSymbol } from './frame-symbol.js';
6
+ import { NilContext } from './meta-frame.js';
7
+ export class FrameNote extends FrameQuote {
8
+ static test(data, source, sum) {
9
+ const note = new FrameNote(data, source);
10
+ const result = new FrameString(sum);
11
+ note.set('n', result);
12
+ return note;
13
+ }
14
+ ;
15
+ static key(source, where) {
16
+ return new FrameNote('!', source, where);
17
+ }
18
+ ;
19
+ static type(source) {
20
+ return new FrameNote('<>', source);
21
+ }
22
+ ;
23
+ static index(source) {
24
+ return new FrameNote('>', source);
25
+ }
26
+ ;
27
+ static pass(source, sum) {
28
+ return FrameNote.test('+', source, sum);
29
+ }
30
+ ;
31
+ static fail(source, sum) {
32
+ return FrameNote.test('-', source, sum);
33
+ }
34
+ ;
35
+ constructor(data, source, where = Frame.nil) {
36
+ super(NilContext);
37
+ this.data = data;
38
+ this.where = where;
39
+ this.up = where;
40
+ this.is.note = true;
41
+ this.setLabel(data, source);
42
+ this.id += this.data;
43
+ }
44
+ in(_contexts = [Frame.nil]) {
45
+ return this;
46
+ }
47
+ call(argument, parameter = Frame.nil) {
48
+ if (argument !== FrameSymbol.end()) {
49
+ const result = this.addExtra(argument, parameter);
50
+ return result;
51
+ }
52
+ const output = this.get(Frame.kOUT);
53
+ output.call(this);
54
+ output.call(FrameSymbol.end());
55
+ return this.up;
56
+ }
57
+ string_prefix() {
58
+ return FrameNote.NOTE_BEGIN;
59
+ }
60
+ ;
61
+ string_suffix() {
62
+ return FrameNote.NOTE_END;
63
+ }
64
+ ;
65
+ toString() {
66
+ return this.string_prefix() + this.data + this.meta_string();
67
+ }
68
+ setLabel(data, source) {
69
+ const label = FrameNote.LABELS.en[data];
70
+ let value = new FrameString(data);
71
+ let key = '!';
72
+ if (label) {
73
+ key = label;
74
+ value = new FrameString(source);
75
+ }
76
+ if (key === '!') {
77
+ this.is.missing = true;
78
+ }
79
+ this.set(key, value);
80
+ }
81
+ addExtra(argument, parameter) {
82
+ let extras = this.get(FrameNote.NOTE_EXTRAS);
83
+ if (extras.is.missing) {
84
+ extras = new FrameArray([]);
85
+ this.set(FrameNote.NOTE_EXTRAS, extras);
86
+ }
87
+ extras.apply(argument, parameter);
88
+ return this;
89
+ }
90
+ }
91
+ FrameNote.NOTE_BEGIN = '$';
92
+ FrameNote.NOTE_END = ';';
93
+ FrameNote.NOTE_EXTRAS = '++';
94
+ FrameNote.LABELS = {
95
+ en: {
96
+ '!': 'name-missing',
97
+ '+': 'test-pass',
98
+ '-': 'test-fail',
99
+ '<>': 'type-mismatch',
100
+ '>': 'bounds-exceeded'
101
+ }
102
+ };
103
+ ;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbm90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbm90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFLNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBZWhDLE1BQU0sQ0FBQyxJQUFJLENBQUUsSUFBWSxFQUFFLE1BQWMsRUFBRSxHQUFXO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQSxDQUFDO0lBRUssTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjLEVBQUUsS0FBWTtRQUM3QyxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWM7UUFDaEMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENBQUMsS0FBSyxDQUFFLE1BQWM7UUFDakMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWMsRUFBRSxHQUFXO1FBQzdDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFBQSxDQUFDO0lBRUssTUFBTSxDQUFDLElBQUksQ0FBRSxNQUFjLEVBQUUsR0FBVztRQUM3QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQUEsQ0FBQztJQUVGLFlBQXVCLElBQVksRUFBRSxNQUFjLEVBQVMsUUFBUSxLQUFLLENBQUMsR0FBRztRQUMzRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7UUFESSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQXlCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFFM0UsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUE7UUFDZixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ3RCLENBQUM7SUFFTSxFQUFFLENBQUUsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTSxJQUFJLENBQUUsUUFBZSxFQUFFLFNBQVMsR0FBRyxLQUFLLENBQUMsR0FBRztRQUNqRCxJQUFJLFFBQVEsS0FBSyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDakQsT0FBTyxNQUFNLENBQUE7U0FDZDtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUM5QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUE7SUFDaEIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFBO0lBQzdCLENBQUM7SUFBQSxDQUFDO0lBRUssYUFBYTtRQUNsQixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUE7SUFDM0IsQ0FBQztJQUFBLENBQUM7SUFFSyxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDOUQsQ0FBQztJQUVTLFFBQVEsQ0FBRSxJQUFZLEVBQUUsTUFBYztRQUM5QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEtBQUssR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqQyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUE7UUFDYixJQUFJLEtBQUssRUFBRTtZQUNULEdBQUcsR0FBRyxLQUFLLENBQUE7WUFDWCxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDaEM7UUFDRCxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUE7U0FDdkI7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0QixDQUFDO0lBRVMsUUFBUSxDQUFFLFFBQWUsRUFBRSxTQUFnQjtRQUNuRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1QyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDeEM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUNqQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7O0FBbEdzQixvQkFBVSxHQUFHLEdBQUcsQ0FBQTtBQUNoQixrQkFBUSxHQUFHLEdBQUcsQ0FBQTtBQUNkLHFCQUFXLEdBQUcsSUFBSSxDQUFBO0FBRWxCLGdCQUFNLEdBQW9CO0lBQy9DLEVBQUUsRUFBRTtRQUNGLEdBQUcsRUFBRSxjQUFjO1FBQ25CLEdBQUcsRUFBRSxXQUFXO1FBQ2hCLEdBQUcsRUFBRSxXQUFXO1FBQ2hCLElBQUksRUFBRSxlQUFlO1FBQ3JCLEdBQUcsRUFBRSxpQkFBaUI7S0FDdkI7Q0FDRixDQUFBO0FBdUZGLENBQUMifQ==
@@ -0,0 +1,28 @@
1
+ import { FrameAtom } from './frame-atom.js';
2
+ import { NilContext } from './meta-frame.js';
3
+ export class FrameNumber extends FrameAtom {
4
+ static for(digits) {
5
+ const exists = FrameNumber.numbers[digits];
6
+ return exists || (FrameNumber.numbers[digits] = new FrameNumber(digits));
7
+ }
8
+ constructor(source, meta = NilContext) {
9
+ super(meta);
10
+ this.data = parseInt(source, 10);
11
+ }
12
+ string_start() {
13
+ return FrameNumber.NUMBER_BEGIN.toString();
14
+ }
15
+ ;
16
+ canInclude(char) {
17
+ return FrameNumber.NUMBER_CHAR.test(char);
18
+ }
19
+ toData() {
20
+ return this.data;
21
+ }
22
+ }
23
+ FrameNumber.NUMBER_BEGIN = /[1-9]/;
24
+ FrameNumber.NUMBER_CHAR = /\d/;
25
+ // eslint-disable-next-line no-use-before-define
26
+ FrameNumber.numbers = {};
27
+ ;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1udW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVyRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFJakMsTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjO1FBQy9CLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQU1ELFlBQWEsTUFBYyxFQUFFLE9BQWdCLFVBQVU7UUFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBQUEsQ0FBQztJQUVLLFVBQVUsQ0FBRSxJQUFZO1FBQzdCLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVTLE1BQU07UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQzs7QUEzQnNCLHdCQUFZLEdBQUcsT0FBTyxDQUFBO0FBQ3RCLHVCQUFXLEdBQUcsSUFBSSxDQUFBO0FBT3pDLGdEQUFnRDtBQUMvQixtQkFBTyxHQUFvQyxFQUFFLENBQUE7QUFtQi9ELENBQUMifQ==
@@ -0,0 +1,47 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameList } from './frame-list.js';
3
+ import { FrameNote } from './frame-note.js';
4
+ import { NilContext } from './meta-frame.js';
5
+ export class FrameSchema extends FrameList {
6
+ constructor(data, meta = NilContext) {
7
+ super(data, meta);
8
+ }
9
+ string_open() {
10
+ return FrameSchema.BEGIN_SCHEMA;
11
+ }
12
+ ;
13
+ string_close() {
14
+ return FrameSchema.END_SCHEMA;
15
+ }
16
+ ;
17
+ in(contexts = [Frame.nil]) {
18
+ const array = this.array_eval(contexts);
19
+ return new FrameSchema(array);
20
+ }
21
+ apply(argument, parameter) {
22
+ if (!argument.is.void) {
23
+ this.data.push(argument);
24
+ }
25
+ return this;
26
+ }
27
+ at(index) {
28
+ if (index >= this.size() || -index > this.size()) {
29
+ const source = '[0..' + this.size() + '].' + index;
30
+ return FrameNote.index(source);
31
+ }
32
+ if (index >= 0) {
33
+ return this.data[index];
34
+ }
35
+ const n = this.data.length;
36
+ return this.data[n + index];
37
+ }
38
+ length() {
39
+ return this.data.length;
40
+ }
41
+ reset() {
42
+ this.data = [];
43
+ }
44
+ }
45
+ FrameSchema.BEGIN_SCHEMA = '<';
46
+ FrameSchema.END_SCHEMA = '>';
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUU1QyxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFJeEMsWUFBYSxJQUFrQixFQUFFLElBQUksR0FBRyxVQUFVO1FBQ2hELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFBO0lBQ2pDLENBQUM7SUFBQSxDQUFDO0lBRUssWUFBWTtRQUNqQixPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUE7SUFDL0IsQ0FBQztJQUFBLENBQUM7SUFFSyxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBRSxRQUFlLEVBQUUsU0FBZ0I7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1NBQ3pCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRU0sRUFBRSxDQUFFLEtBQWE7UUFDdEIsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUE7WUFDbEQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQy9CO1FBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQ3hCO1FBQ0QsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDekIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUNoQixDQUFDOztBQTdDc0Isd0JBQVksR0FBRyxHQUFHLENBQUE7QUFDbEIsc0JBQVUsR0FBRyxHQUFHLENBQUEifQ==
@@ -0,0 +1,41 @@
1
+ import { FrameQuote } from './frame-atom.js';
2
+ import { FrameSymbol } from './frame-symbol.js';
3
+ import { NilContext } from './meta-frame.js';
4
+ const reducer = (current, char) => {
5
+ const symbol = FrameSymbol.for(char);
6
+ const result = current.call(symbol);
7
+ return result;
8
+ };
9
+ export class FrameString extends FrameQuote {
10
+ constructor(data, meta = NilContext) {
11
+ super(meta);
12
+ this.data = data;
13
+ }
14
+ apply(argument) {
15
+ let value = argument.toString();
16
+ if (argument instanceof FrameString) {
17
+ value = argument.data;
18
+ }
19
+ return new FrameString(this.data + value);
20
+ }
21
+ string_prefix() {
22
+ return FrameString.STRING_BEGIN;
23
+ }
24
+ ;
25
+ string_suffix() {
26
+ return FrameString.STRING_END;
27
+ }
28
+ ;
29
+ reduce(starter) {
30
+ const final = this.data.split('').reduce(reducer, starter);
31
+ const result = final.call(FrameSymbol.end());
32
+ return result;
33
+ }
34
+ toData() {
35
+ return this.data;
36
+ }
37
+ }
38
+ FrameString.STRING_BEGIN = '“';
39
+ FrameString.STRING_END = '”';
40
+ ;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1zdHJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQVcsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFckQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25DLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBTUQsTUFBTSxPQUFPLFdBQVksU0FBUSxVQUFVO0lBSXpDLFlBQXVCLElBQVksRUFBRSxPQUFnQixVQUFVO1FBQzdELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQURVLFNBQUksR0FBSixJQUFJLENBQVE7SUFFbkMsQ0FBQztJQUVNLEtBQUssQ0FBRSxRQUFtQjtRQUMvQixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDL0IsSUFBSSxRQUFRLFlBQVksV0FBVyxFQUFFO1lBQ25DLEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO1NBQ3RCO1FBQ0QsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQTtJQUNqQyxDQUFDO0lBQUEsQ0FBQztJQUVLLGFBQWE7UUFDbEIsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFBO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBRUssTUFBTSxDQUFFLE9BQWM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMxRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzVDLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVTLE1BQU07UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQzs7QUEvQnNCLHdCQUFZLEdBQUcsR0FBRyxDQUFBO0FBQ2xCLHNCQUFVLEdBQUcsR0FBRyxDQUFBO0FBK0J4QyxDQUFDIn0=
@@ -0,0 +1,75 @@
1
+ import { Frame } from './frame.js';
2
+ import { FrameAtom } from './frame-atom.js';
3
+ import { FrameNote } from './frame-note.js';
4
+ import { NilContext } from './meta-frame.js';
5
+ export class FrameSymbol extends FrameAtom {
6
+ static for(symbol) {
7
+ const exists = FrameSymbol.symbols[symbol];
8
+ return exists || (FrameSymbol.symbols[symbol] = new FrameSymbol(symbol));
9
+ }
10
+ static end() {
11
+ return FrameSymbol.for(Frame.kEND);
12
+ }
13
+ ;
14
+ constructor(data, meta = NilContext) {
15
+ super(meta);
16
+ this.data = data;
17
+ }
18
+ in(contexts = [Frame.nil]) {
19
+ const first = contexts[0];
20
+ for (const context of contexts) {
21
+ const value = context.get(this.data);
22
+ if (!value.is.missing) {
23
+ value.up = context;
24
+ if (value.is.immediate === true) {
25
+ return value.call(context);
26
+ }
27
+ return value;
28
+ }
29
+ }
30
+ return FrameNote.key(first.id + '.' + this.data, first);
31
+ }
32
+ apply(argument, _parameter) {
33
+ const out = this.get(Frame.kOUT);
34
+ out.set(this.data, argument);
35
+ return this;
36
+ }
37
+ setter(out) {
38
+ const meta = {};
39
+ if (!out.is.void) {
40
+ meta[Frame.kOUT] = out;
41
+ }
42
+ const setter = new FrameSymbol(this.data, meta);
43
+ return setter;
44
+ }
45
+ called_by(context) {
46
+ return this.in([context]);
47
+ }
48
+ string_start() {
49
+ return FrameSymbol.SYMBOL_BEGIN.toString();
50
+ }
51
+ ;
52
+ canInclude(char) {
53
+ return FrameSymbol.SYMBOL_CHAR.test(char);
54
+ }
55
+ toData() {
56
+ return this.data;
57
+ }
58
+ }
59
+ FrameSymbol.SYMBOL_BEGIN = /[a-zA-Z]/;
60
+ FrameSymbol.SYMBOL_CHAR = /[-\w]/;
61
+ // eslint-disable-next-line no-use-before-define
62
+ FrameSymbol.symbols = {};
63
+ ;
64
+ export class FrameOperator extends FrameSymbol {
65
+ string_start() {
66
+ return FrameOperator.OPERATOR_BEGIN.toString();
67
+ }
68
+ ;
69
+ canInclude(char) {
70
+ return FrameOperator.OPERATOR_CHAR.test(char);
71
+ }
72
+ }
73
+ FrameOperator.OPERATOR_BEGIN = /[&|?:+\-*=<>!]/;
74
+ FrameOperator.OPERATOR_CHAR = /[&|?:+\-*=<>!]/;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1zeW1ib2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVyRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFJakMsTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjO1FBQy9CLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBQUEsQ0FBQztJQUtGLFlBQXVCLElBQVksRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFRO0lBRW5DLENBQUM7SUFFTSxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNyQixLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQTtnQkFDbEIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7b0JBQy9CLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtpQkFDM0I7Z0JBQ0QsT0FBTyxLQUFLLENBQUE7YUFDYjtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVNLEtBQUssQ0FBRSxRQUFlLEVBQUUsVUFBaUI7UUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVNLE1BQU0sQ0FBRSxHQUFVO1FBQ3ZCLE1BQU0sSUFBSSxHQUFZLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7U0FDdkI7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQy9DLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztJQUVNLFNBQVMsQ0FBRSxPQUFjO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzVDLENBQUM7SUFBQSxDQUFDO0lBRUssVUFBVSxDQUFFLElBQVk7UUFDN0IsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRVMsTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDOztBQS9Ec0Isd0JBQVksR0FBRyxVQUFVLENBQUE7QUFDekIsdUJBQVcsR0FBRyxPQUFPLENBQUE7QUFXNUMsZ0RBQWdEO0FBQy9CLG1CQUFPLEdBQW9DLEVBQUUsQ0FBQTtBQW1EL0QsQ0FBQztBQUVGLE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBVztJQUlyQyxZQUFZO1FBQ2pCLE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBQUEsQ0FBQztJQUVLLFVBQVUsQ0FBRSxJQUFZO1FBQzdCLE9BQU8sYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0MsQ0FBQzs7QUFUc0IsNEJBQWMsR0FBRyxnQkFBZ0IsQ0FBQTtBQUNqQywyQkFBYSxHQUFHLGdCQUFnQixDQUFBIn0=
@@ -0,0 +1,75 @@
1
+ import { inspect } from 'node:util';
2
+ import { MetaFrame, NilContext } from './meta-frame.js';
3
+ export class Frame extends MetaFrame {
4
+ constructor(meta = NilContext, isNil = false, isMissing = false) {
5
+ super(meta);
6
+ this.up = Frame.missing;
7
+ this.is = {};
8
+ if (isNil) {
9
+ this.is.void = true;
10
+ }
11
+ if (isMissing) {
12
+ this.is.missing = true;
13
+ }
14
+ }
15
+ string_open() {
16
+ return Frame.BEGIN_EXPR;
17
+ }
18
+ ;
19
+ string_close() {
20
+ return Frame.END_EXPR;
21
+ }
22
+ ;
23
+ at(_index) {
24
+ return Frame.nil;
25
+ }
26
+ in(_contexts = [Frame.nil]) {
27
+ return this;
28
+ }
29
+ apply(argument, _parameter) {
30
+ return argument;
31
+ }
32
+ called_by(context, parameter) {
33
+ if (this.is.void) {
34
+ return context;
35
+ }
36
+ return context.apply(this, parameter);
37
+ }
38
+ call(argument, parameter = Frame.nil) {
39
+ if (this.is.void) {
40
+ return argument;
41
+ }
42
+ return argument.called_by(this, parameter);
43
+ }
44
+ toString() {
45
+ return this.string_open() + this.meta_string() + this.string_close();
46
+ }
47
+ className() {
48
+ return this.constructor.name;
49
+ }
50
+ inspect() {
51
+ let result = `${this.className()}<${this.toString()}>`;
52
+ const meta = this.meta_string();
53
+ if (meta.length > 2) {
54
+ result += meta;
55
+ }
56
+ if (Object.keys(this.is).length > 0) {
57
+ result += `:${inspect(this.is)}`;
58
+ }
59
+ return result;
60
+ }
61
+ asArray() {
62
+ // return _.castArray(this)
63
+ return [this];
64
+ }
65
+ }
66
+ Frame.kOUT = '>>';
67
+ Frame.kEND = '$$';
68
+ Frame.BEGIN_EXPR = '(';
69
+ Frame.END_EXPR = ')';
70
+ Frame.nil = new Frame(NilContext, true);
71
+ // eslint-disable-next-line no-use-before-define
72
+ Frame.missing = new Frame(NilContext, false, true);
73
+ Frame.globals = Frame.missing;
74
+ ;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZnJhbWVzL2ZyYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUl2RCxNQUFNLE9BQU8sS0FBTSxTQUFRLFNBQVM7SUFZbEMsWUFBYSxJQUFJLEdBQUcsVUFBVSxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsU0FBUyxHQUFHLEtBQUs7UUFDOUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO1FBQ1osSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7U0FDcEI7UUFDRCxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtTQUN2QjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQTtJQUN6QixDQUFDO0lBQUEsQ0FBQztJQUVLLFlBQVk7UUFDakIsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFBO0lBQ3ZCLENBQUM7SUFBQSxDQUFDO0lBRUssRUFBRSxDQUFFLE1BQWM7UUFDdkIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFBO0lBQ2xCLENBQUM7SUFFTSxFQUFFLENBQUUsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTSxLQUFLLENBQUUsUUFBZSxFQUFFLFVBQWlCO1FBQzlDLE9BQU8sUUFBUSxDQUFBO0lBQ2pCLENBQUM7SUFFTSxTQUFTLENBQUUsT0FBYyxFQUFFLFNBQWdCO1FBQ2hELElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxPQUFPLENBQUE7U0FDZjtRQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVNLElBQUksQ0FBRSxRQUFlLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxHQUFHO1FBQ2pELElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxRQUFRLENBQUE7U0FDaEI7UUFDRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUN0RSxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUE7SUFDOUIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQTtRQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQixNQUFNLElBQUksSUFBSSxDQUFBO1NBQ2Y7UUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRU0sT0FBTztRQUNaLDJCQUEyQjtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDZixDQUFDOztBQWhGc0IsVUFBSSxHQUFHLElBQUksQ0FBQTtBQUNYLFVBQUksR0FBRyxJQUFJLENBQUE7QUFDWCxnQkFBVSxHQUFHLEdBQUcsQ0FBQTtBQUNoQixjQUFRLEdBQUcsR0FBRyxDQUFBO0FBQ2QsU0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtBQUN4RCxnREFBZ0Q7QUFDekIsYUFBTyxHQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDNUQsYUFBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7QUEwRXRDLENBQUMifQ==
@@ -0,0 +1,99 @@
1
+ import { Frame } from './frame.js';
2
+ export const NilContext = {};
3
+ export class MetaFrame {
4
+ constructor(meta = NilContext, _isNil = false) {
5
+ this.meta = meta;
6
+ this.up = Frame.missing;
7
+ const name = this.constructor.name;
8
+ const id = name + '.' + MetaFrame.id_count++;
9
+ this.id = '$:' + id;
10
+ }
11
+ get_here(key, _origin = this) {
12
+ const exact = this.meta[key];
13
+ if (exact != null) {
14
+ return exact;
15
+ }
16
+ ;
17
+ return this.match_here(key);
18
+ }
19
+ get(key, origin = this) {
20
+ const result = this.get_here(key, origin);
21
+ if (!result.is.missing) {
22
+ return result;
23
+ }
24
+ ;
25
+ let parent = this.up || Frame.globals;
26
+ if (parent.is.missing) {
27
+ if (Frame.globals.is.missing) {
28
+ return Frame.missing;
29
+ }
30
+ ;
31
+ parent = Frame.globals;
32
+ }
33
+ return parent.get(key, origin);
34
+ }
35
+ set(key, value) {
36
+ if (this.meta === NilContext) {
37
+ this.meta = {};
38
+ }
39
+ this.meta[key] = value;
40
+ return this;
41
+ }
42
+ meta_copy() {
43
+ return Object.assign({}, this.meta);
44
+ }
45
+ meta_keys() {
46
+ return Object.keys(this.meta);
47
+ }
48
+ meta_length() {
49
+ return this.meta_keys().length;
50
+ }
51
+ meta_pairs() {
52
+ // return this.meta.map((value: any, key: string): IKeyValuePair => {return [key, value]})
53
+ return Object.entries(this.meta);
54
+ }
55
+ meta_string() {
56
+ return this.meta_pairs().map(([key, value]) => {
57
+ if (key === Frame.kOUT) {
58
+ return `.${key} ${value.id};`;
59
+ }
60
+ else {
61
+ return `.${key} ${value};`;
62
+ }
63
+ }).join(' ');
64
+ }
65
+ match_here(target) {
66
+ let result = Frame.missing;
67
+ /*
68
+ _.forOwn(this.meta, (value, key) => {
69
+ const isPattern = key.match(/\/(.*)\//)
70
+ if (isPattern) {
71
+ const pattern = new RegExp(isPattern[1])
72
+ if (pattern.test(target)) {
73
+ result = value
74
+ if (result.hasOwnProperty('source')) {
75
+ const sourced = result as ISourced
76
+ sourced.source = target
77
+ }
78
+ }
79
+ }
80
+ })
81
+ */
82
+ this.meta_pairs().forEach(([key, value]) => {
83
+ const isPattern = key.match(/\/(.*)\//);
84
+ if (isPattern) {
85
+ const pattern = new RegExp(isPattern[1]);
86
+ if (pattern.test(target)) {
87
+ result = value;
88
+ if (result.hasOwnProperty('source')) {
89
+ const sourced = result;
90
+ sourced.source = target;
91
+ }
92
+ }
93
+ }
94
+ });
95
+ return result;
96
+ }
97
+ }
98
+ MetaFrame.id_count = 0;
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YS1mcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvbWV0YS1mcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBT2xDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBWSxFQUFFLENBQUE7QUFJckMsTUFBTSxPQUFPLFNBQVM7SUFLcEIsWUFBb0IsT0FBTyxVQUFVLEVBQUUsTUFBTSxHQUFHLEtBQUs7UUFBakMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUg5QixPQUFFLEdBQVUsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUk5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQTtRQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUM1QyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVNLFFBQVEsQ0FBRSxHQUFXLEVBQUUsVUFBcUIsSUFBSTtRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzVCLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLEtBQUssQ0FBQTtTQUNiO1FBQUEsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRU0sR0FBRyxDQUFFLEdBQVcsRUFBRSxTQUFvQixJQUFJO1FBQy9DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRTtZQUN0QixPQUFPLE1BQU0sQ0FBQTtTQUNkO1FBQUEsQ0FB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
@@ -0,0 +1,24 @@
1
+ import { Frame } from './frames/frame.js';
2
+ import { Ops } from './ops.js';
3
+ export { FrameAlias } from './frames/frame-alias.js';
4
+ export { FrameArray } from './frames/frame-array.js';
5
+ export { FrameAtom, FrameQuote } from './frames/frame-atom.js';
6
+ export { FrameArg, FrameParam } from './frames/frame-arg.js';
7
+ export { FrameBlob } from './frames/frame-blob.js';
8
+ export { FrameBytes } from './frames/frame-bytes.js';
9
+ export { FrameComment } from './frames/frame-comment.js';
10
+ export { FrameDoc } from './frames/frame-doc.js';
11
+ export { FrameExpr } from './frames/frame-expr.js';
12
+ export { FrameGroup } from './frames/frame-group.js';
13
+ export { FrameLazy } from './frames/frame-lazy.js';
14
+ export { FrameList } from './frames/frame-list.js';
15
+ export { FrameName } from './frames/frame-name.js';
16
+ export { FrameNote } from './frames/frame-note.js';
17
+ export { FrameNumber } from './frames/frame-number.js';
18
+ export { FrameSchema } from './frames/frame-schema.js';
19
+ export { FrameString } from './frames/frame-string.js';
20
+ export { FrameOperator, FrameSymbol } from './frames/frame-symbol.js';
21
+ export { Frame } from './frames/frame.js';
22
+ export { MetaFrame, NilContext } from './frames/meta-frame.js';
23
+ Frame.globals = Ops;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZyYW1lcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUU5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBc0IsTUFBTSwwQkFBMEIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN6QyxPQUFPLEVBQW9DLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNoRyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQSJ9