hclang 0.1.0 → 0.5.4
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/README.md +25 -3
- package/lib/src/cli/hc.js +40 -0
- package/lib/src/cli/runfile.js +28 -0
- package/lib/src/execute/eval-pipe.js +15 -0
- package/lib/src/execute/evaluate.js +10 -0
- package/lib/src/execute/execute.js +18 -0
- package/lib/src/execute/frame-space.js +17 -0
- package/lib/src/execute/hc-eval.js +105 -0
- package/lib/src/execute/hc-log.js +39 -0
- package/lib/src/execute/hc-test.js +43 -0
- package/lib/src/execute/lex-bytes.js +42 -0
- package/lib/src/execute/lex-pipe.js +56 -0
- package/lib/src/execute/lex.js +110 -0
- package/lib/src/execute/lexer.js +24 -0
- package/lib/src/execute/parse-pipe.js +52 -0
- package/lib/src/execute/syntax.js +36 -0
- package/lib/src/execute/terminals.js +54 -0
- package/lib/src/execute.js +3 -0
- package/lib/src/frames/frame-alias.js +45 -0
- package/lib/src/frames/frame-arg.js +62 -0
- package/lib/src/frames/frame-array.js +47 -0
- package/lib/src/frames/frame-atom.js +41 -0
- package/lib/src/frames/frame-blob.js +104 -0
- package/lib/src/frames/frame-bytes.js +31 -0
- package/lib/src/frames/frame-comment.js +28 -0
- package/lib/src/frames/frame-doc.js +19 -0
- package/lib/src/frames/frame-expr.js +34 -0
- package/lib/src/frames/frame-group.js +31 -0
- package/lib/src/frames/frame-lazy.js +39 -0
- package/lib/src/frames/frame-list.js +58 -0
- package/lib/src/frames/frame-name.js +29 -0
- package/lib/src/frames/frame-note.js +104 -0
- package/lib/src/frames/frame-number.js +28 -0
- package/lib/src/frames/frame-schema.js +47 -0
- package/lib/src/frames/frame-string.js +41 -0
- package/lib/src/frames/frame-symbol.js +75 -0
- package/lib/src/frames/frame.js +75 -0
- package/lib/src/frames/meta-frame.js +99 -0
- package/lib/src/frames.js +24 -0
- package/lib/src/index.js +5 -0
- package/lib/src/maml/tag.js +17 -0
- package/lib/src/maml.js +26 -0
- package/lib/src/ops/conditionals.js +14 -0
- package/lib/src/ops/frame-curry.js +17 -0
- package/lib/src/ops/frame-ops.js +24 -0
- package/lib/src/ops/iterators.js +28 -0
- package/lib/src/ops.js +12 -0
- package/lib/src/version.js +3 -0
- package/lib/test/execute/eval-pipe-spec.js +45 -0
- package/lib/test/execute/evaluate-spec.js +76 -0
- package/lib/test/execute/execute-spec.js +115 -0
- package/lib/test/execute/hc-eval-spec.js +68 -0
- package/lib/test/execute/hc-test-spec.js +47 -0
- package/lib/test/execute/lex-pipe-spec.js +25 -0
- package/lib/test/execute/parse-spec.js +67 -0
- package/lib/test/execute/script-spec.js +29 -0
- package/lib/test/frames/frame-alias-spec.js +36 -0
- package/lib/test/frames/frame-arg-spec.js +57 -0
- package/lib/test/frames/frame-array-spec.js +54 -0
- package/lib/test/frames/frame-blob-spec.js +56 -0
- package/lib/test/frames/frame-bytes-spec.js +16 -0
- package/lib/test/frames/frame-comment-spec.js +17 -0
- package/lib/test/frames/frame-doc-spec.js +17 -0
- package/lib/test/frames/frame-expr-spec.js +60 -0
- package/lib/test/frames/frame-group-spec.js +27 -0
- package/lib/test/frames/frame-lazy-spec.js +49 -0
- package/lib/test/frames/frame-name-spec.js +26 -0
- package/lib/test/frames/frame-note-spec.js +48 -0
- package/lib/test/frames/frame-number-spec.js +17 -0
- package/lib/test/frames/frame-schema-spec.js +54 -0
- package/lib/test/frames/frame-spec.js +31 -0
- package/lib/test/frames/frame-string-spec.js +43 -0
- package/lib/test/frames/frame-symbol-spec.js +64 -0
- package/lib/test/frames/meta-frame-spec.js +75 -0
- package/lib/test/maml/maml-spec.js +42 -0
- package/lib/test/maml/tag-spec.js +53 -0
- package/lib/test/ops/iterators-spec.js +70 -0
- package/package.json +60 -34
- package/lib/bin.d.ts +0 -0
- package/lib/bin.js +0 -6
- package/lib/execute/actions.d.ts +0 -13
- package/lib/execute/actions.js +0 -48
- package/lib/execute/eval-pipe.d.ts +0 -5
- package/lib/execute/eval-pipe.js +0 -32
- package/lib/execute/evaluate.d.ts +0 -2
- package/lib/execute/evaluate.js +0 -20
- package/lib/execute/frame-space.d.ts +0 -7
- package/lib/execute/frame-space.js +0 -32
- package/lib/execute/group-pipe.d.ts +0 -6
- package/lib/execute/group-pipe.js +0 -27
- package/lib/execute/lex-pipe.d.ts +0 -12
- package/lib/execute/lex-pipe.js +0 -55
- package/lib/execute/lex.d.ts +0 -26
- package/lib/execute/lex.js +0 -94
- package/lib/execute/lexer.d.ts +0 -9
- package/lib/execute/lexer.js +0 -55
- package/lib/execute/parse-pipe.d.ts +0 -8
- package/lib/execute/parse-pipe.js +0 -49
- package/lib/execute/parser.d.ts +0 -8
- package/lib/execute/parser.js +0 -49
- package/lib/execute/syntax.d.ts +0 -2
- package/lib/execute/syntax.js +0 -23
- package/lib/execute/terminals.d.ts +0 -10
- package/lib/execute/terminals.js +0 -48
- package/lib/execute.d.ts +0 -1
- package/lib/execute.js +0 -9
- package/lib/frames/frame-arg.d.ts +0 -24
- package/lib/frames/frame-arg.js +0 -81
- package/lib/frames/frame-array.d.ts +0 -15
- package/lib/frames/frame-array.js +0 -50
- package/lib/frames/frame-atom.d.ts +0 -17
- package/lib/frames/frame-atom.js +0 -52
- package/lib/frames/frame-comment.d.ts +0 -12
- package/lib/frames/frame-comment.js +0 -36
- package/lib/frames/frame-doc.d.ts +0 -9
- package/lib/frames/frame-doc.js +0 -31
- package/lib/frames/frame-expr.d.ts +0 -9
- package/lib/frames/frame-expr.js +0 -48
- package/lib/frames/frame-group.d.ts +0 -7
- package/lib/frames/frame-group.js +0 -39
- package/lib/frames/frame-lazy.d.ts +0 -13
- package/lib/frames/frame-lazy.js +0 -54
- package/lib/frames/frame-list.d.ts +0 -15
- package/lib/frames/frame-list.js +0 -51
- package/lib/frames/frame-name.d.ts +0 -12
- package/lib/frames/frame-name.js +0 -37
- package/lib/frames/frame-number.d.ts +0 -9
- package/lib/frames/frame-number.js +0 -31
- package/lib/frames/frame-string.d.ts +0 -14
- package/lib/frames/frame-string.js +0 -47
- package/lib/frames/frame-symbol.d.ts +0 -18
- package/lib/frames/frame-symbol.js +0 -64
- package/lib/frames/frame.d.ts +0 -22
- package/lib/frames/frame.js +0 -73
- package/lib/frames/meta-frame.d.ts +0 -26
- package/lib/frames/meta-frame.js +0 -85
- package/lib/frames.d.ts +0 -15
- package/lib/frames.js +0 -36
- package/lib/hc.d.ts +0 -0
- package/lib/hc.js +0 -13
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -9
- package/lib/maml/tag.d.ts +0 -2
- package/lib/maml/tag.js +0 -19
- package/lib/maml.d.ts +0 -2
- package/lib/maml.js +0 -30
- package/lib/ops/frame-curry.d.ts +0 -9
- package/lib/ops/frame-curry.js +0 -31
- package/lib/ops/frame-ops.d.ts +0 -12
- package/lib/ops/frame-ops.js +0 -41
- package/lib/ops/iterators.d.ts +0 -2
- package/lib/ops/iterators.js +0 -12
- package/lib/ops.d.ts +0 -3
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtbm90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mcmFtZXMvZnJhbWUtbm90ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFLNUMsTUFBTSxPQUFPLFNBQVUsU0FBUSxVQUFVO0lBZWhDLE1BQU0sQ0FBQyxJQUFJLENBQUUsSUFBWSxFQUFFLE1BQWMsRUFBRSxHQUFXO1FBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNyQixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFBQSxDQUFDO0lBRUssTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjLEVBQUUsS0FBWTtRQUM3QyxPQUFPLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENBQUMsSUFBSSxDQUFFLE1BQWM7UUFDaEMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUFBLENBQUM7SUFFSyxNQUFNLENB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
|
|
@@ -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 === '$$' ? '\n' : 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWUtc3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZyYW1lcy9mcmFtZS1zeW1ib2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVyRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFJakMsTUFBTSxDQUFDLEdBQUcsQ0FBRSxNQUFjO1FBQy9CLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUMsT0FBTyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDMUUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHO1FBQ2YsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBQUEsQ0FBQztJQUtGLFlBQXVCLElBQVksRUFBRSxJQUFJLEdBQUcsVUFBVTtRQUNwRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFEVSxTQUFJLEdBQUosSUFBSSxDQUFRO0lBRW5DLENBQUM7SUFFTSxFQUFFLENBQUUsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENB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
|
|
@@ -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
|