aontu 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aontu.ts +5 -1
- package/dist/aontu.js +3 -1
- package/dist/aontu.js.map +1 -1
- package/dist/lib/lang.d.ts +1 -1
- package/dist/lib/lang.js +82 -241
- package/dist/lib/lang.js.map +1 -1
- package/dist/lib/op/op.d.ts +1 -1
- package/dist/lib/op/unite.js +8 -3
- package/dist/lib/op/unite.js.map +1 -1
- package/dist/lib/unify.d.ts +2 -1
- package/dist/lib/unify.js +3 -3
- package/dist/lib/unify.js.map +1 -1
- package/dist/lib/val.d.ts +12 -1
- package/dist/lib/val.js +88 -45
- package/dist/lib/val.js.map +1 -1
- package/lib/lang.ts +121 -278
- package/lib/op/op.ts +2 -1
- package/lib/op/unite.ts +12 -4
- package/lib/unify.ts +6 -8
- package/lib/val.ts +127 -57
- package/package.json +11 -10
package/aontu.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
1
|
+
/* Copyright (c) 2021-2022 Richard Rodger, MIT License */
|
|
2
2
|
|
|
3
3
|
import { Options } from './lib/common'
|
|
4
4
|
import { Lang, includeFileResolver } from './lib/lang'
|
|
5
5
|
import { Unify } from './lib/unify'
|
|
6
6
|
import { Val, Nil } from './lib/val'
|
|
7
7
|
|
|
8
|
+
// FIX: multisource file loading within Conjuct fails
|
|
9
|
+
|
|
10
|
+
// TODO: propogate property path and url properly over unification, and multisource
|
|
11
|
+
|
|
8
12
|
/*
|
|
9
13
|
NEXT:
|
|
10
14
|
inject path from multisource into Vals when created
|
package/dist/aontu.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
2
|
+
/* Copyright (c) 2021-2022 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.util = exports.Lang = exports.Nil = exports.Val = exports.Aontu = void 0;
|
|
5
5
|
const lang_1 = require("./lib/lang");
|
|
@@ -8,6 +8,8 @@ const unify_1 = require("./lib/unify");
|
|
|
8
8
|
const val_1 = require("./lib/val");
|
|
9
9
|
Object.defineProperty(exports, "Val", { enumerable: true, get: function () { return val_1.Val; } });
|
|
10
10
|
Object.defineProperty(exports, "Nil", { enumerable: true, get: function () { return val_1.Nil; } });
|
|
11
|
+
// FIX: multisource file loading within Conjuct fails
|
|
12
|
+
// TODO: propogate property path and url properly over unification, and multisource
|
|
11
13
|
/*
|
|
12
14
|
NEXT:
|
|
13
15
|
inject path from multisource into Vals when created
|
package/dist/aontu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aontu.js","sourceRoot":"","sources":["../aontu.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"aontu.js","sourceRoot":"","sources":["../aontu.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,qCAAsD;AAsE5B,qFAtEjB,WAAI,OAsEiB;AArE9B,uCAAmC;AACnC,mCAAoC;AAoEpB,oFApEP,SAAG,OAoEO;AAAE,oFApEP,SAAG,OAoEO;AAlExB,qDAAqD;AAErD,mFAAmF;AAEnF;;;;;EAKE;AAEF,wBAAwB;AAExB,sBAAsB;AACtB,gDAAgD;AAEhD,wCAAwC;AACxC,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,uBAAuB;AACvB,eAAe;AACf,kBAAkB;AAClB,KAAK;AAEL;;;GAGG;AACH,SAAS,KAAK,CAAC,GAA8B,EAAE,KAAwB;IACrE,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAEnC,IAAI,IAAI,GAAG,IAAI,WAAI,CAAC,IAAI,CAAC,CAAA;IACzB,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,IAAI,GAAG,GAAG,IAAI,aAAK,CAAC,GAAqB,CAAC,CAAA;IAC1C,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IACjB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAA;IAEjB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IAEb,OAAO,GAAG,CAAA;AACZ,CAAC;AAuBQ,sBAAK;AArBd,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,CACP,GAA8B,EAC9B,KAAwB,EACf,EAAE;QACX,mDAAmD;QACnD,IAAI,OAAO,GAAqB,QAAQ,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAEvE,IAAI,IAAI,GAAY;YAClB,GAAG;gBACD,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,0BAAmB;aAC9B;YACD,GAAG,OAAO;YACV,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAE+B,oBAAI;AACpC,kBAAe,KAAK,CAAA"}
|
package/dist/lib/lang.d.ts
CHANGED
package/dist/lib/lang.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
/* Copyright (c) 2021 Richard Rodger, MIT License */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.includeFileResolver = exports.Site = exports.Lang = void 0;
|
|
5
|
-
const
|
|
5
|
+
const jsonic_next_1 = require("@jsonic/jsonic-next");
|
|
6
6
|
const multisource_1 = require("@jsonic/multisource");
|
|
7
7
|
const file_1 = require("@jsonic/multisource/dist/resolver/file");
|
|
8
8
|
const expr_1 = require("@jsonic/expr");
|
|
9
|
+
const path_1 = require("@jsonic/path");
|
|
9
10
|
const val_1 = require("./val");
|
|
10
11
|
class Site {
|
|
11
12
|
constructor(val) {
|
|
@@ -22,56 +23,60 @@ class Site {
|
|
|
22
23
|
exports.Site = Site;
|
|
23
24
|
Site.NONE = new Site(val_1.TOP);
|
|
24
25
|
let AontuJsonic = function aontu(jsonic) {
|
|
26
|
+
jsonic.use(path_1.Path);
|
|
27
|
+
// TODO: refactor Val constructor
|
|
28
|
+
let addpath = (v, p) => (v.path = [...(p || [])], v);
|
|
25
29
|
jsonic.options({
|
|
26
30
|
value: {
|
|
27
|
-
// JSONIC-UPDATE: map: { val: ... }
|
|
28
31
|
map: {
|
|
29
32
|
// NOTE: specify with functions as jsonic/deep will
|
|
30
33
|
// remove class prototype as options are assumed plain
|
|
31
34
|
// (except for functions).
|
|
32
35
|
// TODO: jsonic should be able to pass context into these
|
|
33
|
-
'string': {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
'
|
|
37
|
-
|
|
36
|
+
'string': {
|
|
37
|
+
val: (r) => addpath(new val_1.ScalarTypeVal(String), r.keep.path)
|
|
38
|
+
},
|
|
39
|
+
'number': {
|
|
40
|
+
val: (r) => addpath(new val_1.ScalarTypeVal(Number), r.keep.path)
|
|
41
|
+
},
|
|
42
|
+
'integer': {
|
|
43
|
+
val: (r) => addpath(new val_1.ScalarTypeVal(val_1.Integer), r.keep.path)
|
|
44
|
+
},
|
|
45
|
+
'boolean': {
|
|
46
|
+
val: (r) => addpath(new val_1.ScalarTypeVal(Boolean), r.keep.path)
|
|
47
|
+
},
|
|
48
|
+
'nil': {
|
|
49
|
+
val: (r) => addpath(new val_1.Nil('literal'), r.keep.path)
|
|
50
|
+
},
|
|
51
|
+
// TODO: FIX: need a TOP instance to hold path
|
|
38
52
|
'top': { val: () => val_1.TOP },
|
|
39
53
|
}
|
|
40
54
|
},
|
|
41
|
-
// // JSONIC-UPDATE: fixed: { token }
|
|
42
|
-
// fixed: {
|
|
43
|
-
// token: {
|
|
44
|
-
// '#A&': '&',
|
|
45
|
-
// '#A|': '|',
|
|
46
|
-
// '#A/': '/',
|
|
47
|
-
// '#A*': '*', // TODO: REVIEW char as * is a bit overloaded
|
|
48
|
-
// '#A=': '=',
|
|
49
|
-
// }
|
|
50
|
-
// },
|
|
51
|
-
// JSONIC-UPDATE: check impl
|
|
52
55
|
map: {
|
|
53
56
|
merge: (prev, curr) => {
|
|
54
57
|
let pval = prev;
|
|
55
58
|
let cval = curr;
|
|
56
|
-
return new val_1.ConjunctVal([pval, cval]);
|
|
59
|
+
return addpath(new val_1.ConjunctVal([pval, cval]), prev.path);
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
});
|
|
60
63
|
let opmap = {
|
|
61
|
-
'conjunct-infix': (_op, terms) => new val_1.ConjunctVal(terms),
|
|
62
|
-
'disjunct-infix': (_op, terms) => new val_1.DisjunctVal(terms),
|
|
63
|
-
'dot-prefix': (_op, terms) => new val_1.RefVal(terms, true),
|
|
64
|
-
'dot-infix': (_op, terms) => new val_1.RefVal(terms),
|
|
65
|
-
'star-prefix': (_op, terms) => new val_1.PrefVal(terms[0]),
|
|
64
|
+
'conjunct-infix': (r, _op, terms) => addpath(new val_1.ConjunctVal(terms), r.keep.path),
|
|
65
|
+
'disjunct-infix': (r, _op, terms) => addpath(new val_1.DisjunctVal(terms), r.keep.path),
|
|
66
|
+
'dot-prefix': (r, _op, terms) => addpath(new val_1.RefVal(terms, true), r.keep.path),
|
|
67
|
+
'dot-infix': (r, _op, terms) => addpath(new val_1.RefVal(terms), r.keep.path),
|
|
68
|
+
'star-prefix': (r, _op, terms) => addpath(new val_1.PrefVal(terms[0]), r.keep.path),
|
|
66
69
|
};
|
|
67
70
|
jsonic
|
|
68
71
|
.use(expr_1.Expr, {
|
|
69
72
|
op: {
|
|
73
|
+
// disjunct > conjunct: c & b|a -> c & (b|a)
|
|
70
74
|
'conjunct': {
|
|
71
75
|
infix: true, src: '&', left: 14000, right: 15000
|
|
72
76
|
},
|
|
73
77
|
'disjunct': {
|
|
74
|
-
infix: true, src: '|', left: 14000, right: 15000
|
|
78
|
+
// infix: true, src: '|', left: 14000, right: 15000
|
|
79
|
+
infix: true, src: '|', left: 16000, right: 17000
|
|
75
80
|
},
|
|
76
81
|
'dot-infix': {
|
|
77
82
|
src: '.',
|
|
@@ -90,254 +95,89 @@ let AontuJsonic = function aontu(jsonic) {
|
|
|
90
95
|
right: 14000000,
|
|
91
96
|
},
|
|
92
97
|
},
|
|
93
|
-
evaluate: (op, terms) => {
|
|
94
|
-
// console.log('LANG EVAL', op, terms)
|
|
95
|
-
|
|
98
|
+
evaluate: (r, op, terms) => {
|
|
99
|
+
// console.log('LANG EVAL', r.keep, op, terms)
|
|
100
|
+
let val = opmap[op.name](r, op, terms);
|
|
101
|
+
// console.dir(val, { depth: null })
|
|
102
|
+
return val;
|
|
96
103
|
}
|
|
97
104
|
});
|
|
98
|
-
// console.log(jsonic.token)
|
|
99
105
|
let CJ = jsonic.token['#E&'];
|
|
100
106
|
let CL = jsonic.token.CL;
|
|
101
|
-
// let NR = jsonic.token.NR
|
|
102
|
-
// let TX = jsonic.token.TX
|
|
103
|
-
// let ST = jsonic.token.ST
|
|
104
|
-
// let VL = jsonic.token.VL
|
|
105
|
-
// let OB = jsonic.token.OB
|
|
106
|
-
// let OS = jsonic.token.OS
|
|
107
|
-
// let DJ = jsonic.token['#A|']
|
|
108
|
-
// let FS = jsonic.token['#A/']
|
|
109
|
-
// let AK = jsonic.token['#A*']
|
|
110
|
-
// let EQ = jsonic.token['#A=']
|
|
111
|
-
// JSONIC-UPDATE: rule.open[], rule.close[] - replace with rule.oN|cN
|
|
112
|
-
// jsonic.rule('expr', (rs: RuleSpec) => {
|
|
113
|
-
// rs
|
|
114
|
-
// .open([
|
|
115
|
-
// { s: [[CJ, DJ, AK]], p: 'disjunct', b: 1, n: { expr: 1 } },
|
|
116
|
-
// ])
|
|
117
|
-
// .close([
|
|
118
|
-
// { s: [] }
|
|
119
|
-
// ])
|
|
120
|
-
// // NOTE: expr node are meta structures, not Vals
|
|
121
|
-
// // t=most recent term on the left, o=Val
|
|
122
|
-
// .bo((r: Rule) => r.node = { t: r.node })
|
|
123
|
-
// .ac((r: Rule) => {
|
|
124
|
-
// let cn = r.child.node.o
|
|
125
|
-
// if (cn instanceof PrefVal) {
|
|
126
|
-
// return r.o0.bad('single-pref')
|
|
127
|
-
// }
|
|
128
|
-
// // replace first val with expr val
|
|
129
|
-
// r.node = cn
|
|
130
|
-
// if ('val' === r.parent?.name) {
|
|
131
|
-
// r.parent.node = r.node
|
|
132
|
-
// }
|
|
133
|
-
// })
|
|
134
|
-
// })
|
|
135
|
-
// jsonic.rule('disjunct', (rs: RuleSpec) => {
|
|
136
|
-
// rs
|
|
137
|
-
// .open([
|
|
138
|
-
// {
|
|
139
|
-
// s: [CJ], p: 'conjunct', b: 1
|
|
140
|
-
// },
|
|
141
|
-
// {
|
|
142
|
-
// s: [AK], p: 'pref', b: 1
|
|
143
|
-
// },
|
|
144
|
-
// {
|
|
145
|
-
// s: [DJ, AK], p: 'pref', b: 1,
|
|
146
|
-
// a: (r: Rule) => {
|
|
147
|
-
// // Append to existing or start new
|
|
148
|
-
// r.node.o = r.node.o instanceof DisjunctVal ?
|
|
149
|
-
// r.node.o : new DisjunctVal([r.node.t])
|
|
150
|
-
// }
|
|
151
|
-
// },
|
|
152
|
-
// {
|
|
153
|
-
// s: [DJ, [NR, TX, ST, VL, OB, OS]], b: 1,
|
|
154
|
-
// p: 'val',
|
|
155
|
-
// a: (r: Rule) => {
|
|
156
|
-
// // Append to existing or start new
|
|
157
|
-
// r.node.o = r.node.o instanceof DisjunctVal ?
|
|
158
|
-
// r.node.o : new DisjunctVal([r.node.t])
|
|
159
|
-
// }
|
|
160
|
-
// },
|
|
161
|
-
// ])
|
|
162
|
-
// .close([
|
|
163
|
-
// {
|
|
164
|
-
// s: [DJ], r: 'disjunct', b: 1, a: (r: Rule) => {
|
|
165
|
-
// // higher precedence term (e.g &) was on the left
|
|
166
|
-
// let cn = r.child.node?.o || r.child.node
|
|
167
|
-
// r.node.t = cn
|
|
168
|
-
// }
|
|
169
|
-
// },
|
|
170
|
-
// {
|
|
171
|
-
// s: [CJ], r: 'disjunct', b: 1, a: (r: Rule) => {
|
|
172
|
-
// // & with higher precedence to the right
|
|
173
|
-
// let cn = r.child.node?.o || r.child.node
|
|
174
|
-
// r.node.t = cn
|
|
175
|
-
// r.child.node = null
|
|
176
|
-
// }
|
|
177
|
-
// },
|
|
178
|
-
// {}
|
|
179
|
-
// ])
|
|
180
|
-
// .ac((r: Rule) => {
|
|
181
|
-
// // child values may be normal or expr metas
|
|
182
|
-
// let cn = r.child.node?.o || r.child.node
|
|
183
|
-
// if (cn) {
|
|
184
|
-
// if (r.node.o instanceof DisjunctVal) {
|
|
185
|
-
// r.node.o.append(cn)
|
|
186
|
-
// }
|
|
187
|
-
// else {
|
|
188
|
-
// // this rule was just a pass-through
|
|
189
|
-
// r.node.o = cn
|
|
190
|
-
// }
|
|
191
|
-
// }
|
|
192
|
-
// })
|
|
193
|
-
// })
|
|
194
|
-
// jsonic.rule('conjunct', (rs: RuleSpec) => {
|
|
195
|
-
// rs
|
|
196
|
-
// .open([
|
|
197
|
-
// {
|
|
198
|
-
// s: [CJ, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
|
|
199
|
-
// p: 'val',
|
|
200
|
-
// a: (r: Rule) => {
|
|
201
|
-
// r.node = {
|
|
202
|
-
// o: r.node.o instanceof ConjunctVal ?
|
|
203
|
-
// r.node.o : new ConjunctVal([r.node.t])
|
|
204
|
-
// }
|
|
205
|
-
// }
|
|
206
|
-
// },
|
|
207
|
-
// ])
|
|
208
|
-
// .close([
|
|
209
|
-
// {
|
|
210
|
-
// s: [CJ], r: 'conjunct', b: 1
|
|
211
|
-
// },
|
|
212
|
-
// {}
|
|
213
|
-
// ])
|
|
214
|
-
// .ac((r: Rule) => {
|
|
215
|
-
// let cn = r.child.node?.o || r.child.node
|
|
216
|
-
// if (cn) {
|
|
217
|
-
// if (r.node.o instanceof ConjunctVal) {
|
|
218
|
-
// r.node.o.append(cn)
|
|
219
|
-
// }
|
|
220
|
-
// else {
|
|
221
|
-
// r.node.o = cn
|
|
222
|
-
// }
|
|
223
|
-
// }
|
|
224
|
-
// })
|
|
225
|
-
// })
|
|
226
|
-
// jsonic.rule('path', (rs: RuleSpec) => {
|
|
227
|
-
// rs
|
|
228
|
-
// .open([
|
|
229
|
-
// { s: [FS, [TX, ST, NR, VL]], p: 'part', b: 2 }
|
|
230
|
-
// ])
|
|
231
|
-
// .bo((r: Rule) => r.node = new RefVal('/'))
|
|
232
|
-
// })
|
|
233
|
-
// jsonic.rule('part', (rs: RuleSpec) => {
|
|
234
|
-
// rs.
|
|
235
|
-
// open([
|
|
236
|
-
// {
|
|
237
|
-
// s: [FS, [TX, ST, NR, VL]], r: 'part', a: (r: Rule) => {
|
|
238
|
-
// r.node.append(r.o1.src)
|
|
239
|
-
// }
|
|
240
|
-
// },
|
|
241
|
-
// {}, // no more parts
|
|
242
|
-
// ])
|
|
243
|
-
// })
|
|
244
|
-
// // rs.def.open.unshift({
|
|
245
|
-
// // s: [[CJ, DJ], EQ], p: 'val', u: { spread: true }
|
|
246
|
-
// // })
|
|
247
|
-
// // // TODO: make before/after function[]
|
|
248
|
-
// // let orig_bc: any = rs.def.bc
|
|
249
|
-
// // rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
250
|
-
// // let out = orig_bc.call(this, rule, ctx)
|
|
251
|
-
// // if (rule.use.spread) {
|
|
252
|
-
// // rule.node[MapVal.SPREAD] =
|
|
253
|
-
// // (rule.node[MapVal.SPREAD] || { o: rule.o0.src, v: [] })
|
|
254
|
-
// // rule.node[MapVal.SPREAD].v.push(rule.child.node)
|
|
255
|
-
// // }
|
|
256
|
-
// // return out
|
|
257
|
-
// // }
|
|
258
|
-
// return rs
|
|
259
|
-
// })
|
|
260
|
-
// jsonic.rule('pref', (rs: RuleSpec) => {
|
|
261
|
-
// rs
|
|
262
|
-
// .open([
|
|
263
|
-
// {
|
|
264
|
-
// s: [AK, [NR, TX, ST, VL, OB, OS, FS]], b: 1,
|
|
265
|
-
// p: 'val',
|
|
266
|
-
// },
|
|
267
|
-
// ])
|
|
268
|
-
// .close([
|
|
269
|
-
// // Can't be in a conjunct
|
|
270
|
-
// { s: [CJ], e: (r: Rule) => r.o1 },
|
|
271
|
-
// {}
|
|
272
|
-
// ])
|
|
273
|
-
// .ac((r: Rule) => {
|
|
274
|
-
// r.node = new PrefVal(r.child.node)
|
|
275
|
-
// })
|
|
276
|
-
// })
|
|
277
107
|
jsonic.rule('val', (rs) => {
|
|
278
|
-
// rs.def.open.unshift(
|
|
279
|
-
// // Prefs are always within an expression
|
|
280
|
-
// { s: [AK, [NR, TX, ST, VL, OB, OS, FS]], p: 'expr', b: 2 },
|
|
281
|
-
// { s: [FS, [TX, ST, NR, VL]], p: 'path', b: 2 },
|
|
282
|
-
// )
|
|
283
|
-
// rs.def.close.unshift(
|
|
284
|
-
// {
|
|
285
|
-
// s: [[CJ, DJ]], p: 'expr', b: 1, c: (r: Rule) => {
|
|
286
|
-
// return null == r.n.expr || 0 === r.n.expr
|
|
287
|
-
// }
|
|
288
|
-
// },
|
|
289
|
-
// )
|
|
290
108
|
// TODO: wrap utility needed for jsonic to do this?
|
|
291
|
-
let orig_bc = rs.def.bc
|
|
292
|
-
rs.def.bc = function
|
|
293
|
-
|
|
294
|
-
|
|
109
|
+
// let orig_bc: any = rs.def.bc
|
|
110
|
+
// rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
111
|
+
// let out = orig_bc.call(this, rule, ctx)
|
|
112
|
+
rs.bc(false, (r, ctx) => {
|
|
113
|
+
let valnode = r.node;
|
|
295
114
|
let valtype = typeof valnode;
|
|
115
|
+
// console.log('VAL RULE', rule.use, rule.node)
|
|
296
116
|
if ('string' === valtype) {
|
|
297
|
-
valnode = new val_1.StringVal(
|
|
117
|
+
valnode = addpath(new val_1.StringVal(r.node), r.keep.path);
|
|
298
118
|
}
|
|
299
119
|
else if ('number' === valtype) {
|
|
300
|
-
if (Number.isInteger(
|
|
301
|
-
valnode = new val_1.IntegerVal(
|
|
120
|
+
if (Number.isInteger(r.node)) {
|
|
121
|
+
valnode = addpath(new val_1.IntegerVal(r.node), r.keep.path);
|
|
302
122
|
}
|
|
303
123
|
else {
|
|
304
|
-
valnode = new val_1.NumberVal(
|
|
124
|
+
valnode = addpath(new val_1.NumberVal(r.node), r.keep.path);
|
|
305
125
|
}
|
|
306
126
|
}
|
|
307
127
|
else if ('boolean' === valtype) {
|
|
308
|
-
valnode = new val_1.BooleanVal(
|
|
128
|
+
valnode = addpath(new val_1.BooleanVal(r.node), r.keep.path);
|
|
309
129
|
}
|
|
310
|
-
let st =
|
|
130
|
+
let st = r.o0;
|
|
311
131
|
valnode.row = st.rI;
|
|
312
132
|
valnode.col = st.cI;
|
|
313
133
|
// JSONIC-UPDATE: still valid? check multisource
|
|
314
134
|
valnode.url = ctx.meta.multisource && ctx.meta.multisource.path;
|
|
315
|
-
|
|
316
|
-
return out
|
|
317
|
-
|
|
135
|
+
r.node = valnode;
|
|
136
|
+
// return out
|
|
137
|
+
return undefined;
|
|
138
|
+
});
|
|
318
139
|
return rs;
|
|
319
140
|
});
|
|
320
141
|
jsonic.rule('map', (rs) => {
|
|
321
|
-
let orig_bc = rs.def.bc
|
|
322
|
-
rs.def.bc = function
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
142
|
+
// let orig_bc = rs.def.bc
|
|
143
|
+
// rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
144
|
+
// let out = orig_bc ? orig_bc.call(this, rule, ctx) : undefined
|
|
145
|
+
rs.bc(false, (r) => {
|
|
146
|
+
// console.log('MAP RULE', rule.use, rule.node)
|
|
147
|
+
r.node = addpath(new val_1.MapVal(r.node), r.keep.path);
|
|
148
|
+
// return out
|
|
149
|
+
return undefined;
|
|
150
|
+
});
|
|
151
|
+
return rs;
|
|
152
|
+
});
|
|
153
|
+
jsonic.rule('list', (rs) => {
|
|
154
|
+
// let orig_bc = rs.def.bc
|
|
155
|
+
// rs.def.bc = function(rule: Rule, ctx: Context) {
|
|
156
|
+
// let out = orig_bc ? orig_bc.call(this, rule, ctx) : undefined
|
|
157
|
+
rs.bc(false, (r) => {
|
|
158
|
+
r.node = addpath(new val_1.ListVal(r.node), r.keep.path);
|
|
159
|
+
// return out
|
|
160
|
+
return undefined;
|
|
161
|
+
});
|
|
327
162
|
return rs;
|
|
328
163
|
});
|
|
329
164
|
jsonic.rule('pair', (rs) => {
|
|
330
|
-
let orig_bc = rs.def.bc
|
|
165
|
+
// let orig_bc: any = rs.def.bc
|
|
331
166
|
rs
|
|
332
167
|
.open([{ s: [CJ, CL], p: 'val', u: { spread: true }, g: 'spread' }])
|
|
333
|
-
.bc((...rest) => {
|
|
334
|
-
orig_bc(...rest)
|
|
335
|
-
|
|
168
|
+
// .bc((...rest: any) => {
|
|
169
|
+
// orig_bc(...rest)
|
|
170
|
+
.bc(false, (rule) => {
|
|
171
|
+
// let rule = rest[0]
|
|
172
|
+
// console.log('PAIR RULE', rule.use, rule.node,
|
|
173
|
+
// rule.parent.name, rule.parent.use)
|
|
174
|
+
// TRAVERSE PARENTS TO GET PATH
|
|
336
175
|
if (rule.use.spread) {
|
|
337
176
|
rule.node[val_1.MapVal.SPREAD] =
|
|
338
177
|
(rule.node[val_1.MapVal.SPREAD] || { o: rule.o0.src, v: [] });
|
|
339
178
|
rule.node[val_1.MapVal.SPREAD].v.push(rule.child.node);
|
|
340
179
|
}
|
|
180
|
+
return undefined;
|
|
341
181
|
});
|
|
342
182
|
return rs;
|
|
343
183
|
});
|
|
@@ -353,7 +193,7 @@ class Lang {
|
|
|
353
193
|
print: -1,
|
|
354
194
|
};
|
|
355
195
|
this.options = Object.assign({}, this.options, options);
|
|
356
|
-
this.jsonic =
|
|
196
|
+
this.jsonic = jsonic_next_1.Jsonic.make()
|
|
357
197
|
.use(AontuJsonic)
|
|
358
198
|
.use(multisource_1.MultiSource, {
|
|
359
199
|
resolver: (options === null || options === void 0 ? void 0 : options.resolver) || includeFileResolver
|
|
@@ -372,6 +212,7 @@ class Lang {
|
|
|
372
212
|
if (opts && null != opts.log && Number.isInteger(opts.log)) {
|
|
373
213
|
jm.log = opts.log;
|
|
374
214
|
}
|
|
215
|
+
// jm.log = -1
|
|
375
216
|
let val = this.jsonic(src, jm);
|
|
376
217
|
return val;
|
|
377
218
|
}
|
package/dist/lib/lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../lib/lang.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAEpD,
|
|
1
|
+
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../lib/lang.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/op/op.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ import { Context } from '../unify';
|
|
|
2
2
|
import { Val } from '../val';
|
|
3
3
|
import { disjunct } from './disjunct';
|
|
4
4
|
import { unite } from './unite';
|
|
5
|
-
declare type Operation = (ctx: Context, a?: Val, b?: Val) => Val;
|
|
5
|
+
declare type Operation = (ctx: Context, a?: Val, b?: Val, whence?: string) => Val;
|
|
6
6
|
export { Operation, disjunct, unite, };
|
package/dist/lib/op/unite.js
CHANGED
|
@@ -5,9 +5,11 @@ exports.unite = void 0;
|
|
|
5
5
|
const val_1 = require("../val");
|
|
6
6
|
// Vals should only have to unify downwards (in .unify) over Vals they understand.
|
|
7
7
|
// and for complex Vals, TOP, which means self unify if not yet done
|
|
8
|
-
const unite = (ctx, a, b) => {
|
|
8
|
+
const unite = (ctx, a, b, whence) => {
|
|
9
9
|
let out = a;
|
|
10
|
-
//console.log('
|
|
10
|
+
// console.log('AA OP unite IN', a?.canon, b?.canon,
|
|
11
|
+
// 'W', whence,
|
|
12
|
+
// 'E', 0 < ctx?.err?.length ? ctx.err.map((e: Val) => e.canon) : '')
|
|
11
13
|
if (b && (val_1.TOP === a || !a)) {
|
|
12
14
|
//console.log('Utb', b.canon)
|
|
13
15
|
out = b;
|
|
@@ -30,6 +32,7 @@ const unite = (ctx, a, b) => {
|
|
|
30
32
|
//console.log('U', a.canon, b.canon)
|
|
31
33
|
return b.unify(a, ctx);
|
|
32
34
|
}
|
|
35
|
+
// Exactly equal scalars.
|
|
33
36
|
else if (a.constructor === b.constructor && a.peg === b.peg) {
|
|
34
37
|
out = update(a, b);
|
|
35
38
|
}
|
|
@@ -37,12 +40,14 @@ const unite = (ctx, a, b) => {
|
|
|
37
40
|
out = a.unify(b, ctx);
|
|
38
41
|
}
|
|
39
42
|
}
|
|
40
|
-
if (!out) {
|
|
43
|
+
if (!out || !out.unify) {
|
|
41
44
|
out = val_1.Nil.make(ctx, 'unite', a, b);
|
|
42
45
|
}
|
|
43
46
|
if (val_1.DONE !== out.done) {
|
|
44
47
|
out = out.unify(val_1.TOP, ctx);
|
|
45
48
|
}
|
|
49
|
+
// console.log('AA OP unite OUT', a?.canon, b?.canon, '->', out && out.canon,
|
|
50
|
+
// 0 < ctx?.err?.length ? ctx.err.map((e: Val) => e.canon) : '')
|
|
46
51
|
return out;
|
|
47
52
|
};
|
|
48
53
|
exports.unite = unite;
|
package/dist/lib/op/unite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unite.js","sourceRoot":"","sources":["../../../lib/op/unite.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAKpD,
|
|
1
|
+
{"version":3,"file":"unite.js","sourceRoot":"","sources":["../../../lib/op/unite.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAKpD,gCASe;AAIf,kFAAkF;AAClF,oEAAoE;AACpE,MAAM,KAAK,GAAc,CAAC,GAAY,EAAE,CAAO,EAAE,CAAO,EAAE,MAAe,EAAE,EAAE;IAC3E,IAAI,GAAG,GAAG,CAAC,CAAA;IAEX,qDAAqD;IACrD,iBAAiB;IACjB,uEAAuE;IAGvE,IAAI,CAAC,IAAI,CAAC,SAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC1B,6BAA6B;QAC7B,GAAG,GAAG,CAAC,CAAA;KACR;SAEI,IAAI,CAAC,IAAI,CAAC,SAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC/B,6BAA6B;QAC7B,GAAG,GAAG,CAAC,CAAA;KACR;SAEI,IAAI,CAAC,IAAI,CAAC,IAAI,SAAG,KAAK,CAAC,EAAE;QAC5B,IAAI,CAAC,YAAY,SAAG,EAAE;YACpB,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aACI,IAAI,CAAC,YAAY,SAAG,EAAE;YACzB,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aACI,IACH,CAAC,YAAY,iBAAW;YACxB,CAAC,YAAY,iBAAW;YACxB,CAAC,YAAY,YAAM;YACnB,CAAC,YAAY,aAAO,EACpB;YAEA,oCAAoC;YACpC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SACvB;QAED,yBAAyB;aACpB,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE;YAC3D,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACnB;aAEI;YACH,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;SACtB;KACF;IAED,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;QACtB,GAAG,GAAG,SAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;KACnC;IAED,IAAI,UAAI,KAAK,GAAG,CAAC,IAAI,EAAE;QACrB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,SAAG,EAAE,GAAG,CAAC,CAAA;KAC1B;IAED,6EAA6E;IAC7E,kEAAkE;IAElE,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAUC,sBAAK;AAPP,SAAS,MAAM,CAAC,CAAM,EAAE,EAAO;IAC7B,6BAA6B;IAC7B,OAAO,CAAC,CAAA;AACV,CAAC"}
|
package/dist/lib/unify.d.ts
CHANGED
package/dist/lib/unify.js
CHANGED
|
@@ -15,8 +15,8 @@ class Context {
|
|
|
15
15
|
}
|
|
16
16
|
clone(cfg) {
|
|
17
17
|
return new Context({
|
|
18
|
-
root: cfg.root,
|
|
19
|
-
err: this.err,
|
|
18
|
+
root: cfg.root || this.root,
|
|
19
|
+
err: cfg.err || this.err,
|
|
20
20
|
vc: this.vc,
|
|
21
21
|
});
|
|
22
22
|
}
|
|
@@ -27,6 +27,7 @@ class Context {
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
find(ref) {
|
|
30
|
+
// console.log('FIND', ref.path, ref.peg)
|
|
30
31
|
// TODO: relative paths
|
|
31
32
|
if (this.root instanceof val_1.MapVal && ref.absolute) {
|
|
32
33
|
let node = this.root;
|
|
@@ -60,7 +61,6 @@ class Unify {
|
|
|
60
61
|
// perhaps parse should count intial vals, paths, etc?
|
|
61
62
|
let maxdc = 999;
|
|
62
63
|
for (this.dc = 0; this.dc < maxdc && val_1.DONE !== res.done; this.dc++) {
|
|
63
|
-
//res = res.unify(TOP, ctx)
|
|
64
64
|
res = (0, op_1.unite)(ctx, res, val_1.TOP);
|
|
65
65
|
ctx = ctx.clone({ root: res });
|
|
66
66
|
}
|
package/dist/lib/unify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unify.js","sourceRoot":"","sources":["../../lib/unify.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAIpD,+BAOc;AAEd,iCAEe;AAEf,gCAEgB;AAOhB,MAAM,OAAO;
|
|
1
|
+
{"version":3,"file":"unify.js","sourceRoot":"","sources":["../../lib/unify.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAIpD,+BAOc;AAEd,iCAEe;AAEf,gCAEgB;AAOhB,MAAM,OAAO;IAMX,YAAY,GAIX;QACC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAA;QAExB,4DAA4D;QAC5D,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;IACnD,CAAC;IAGD,KAAK,CAAC,GAIL;QACC,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAC3B,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG;YACxB,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CAAA;IACJ,CAAC;IAGD,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SAC5B,CAAC,CAAA;IACJ,CAAC;IAGD,IAAI,CAAC,GAAW;QACd,yCAAyC;QAEzC,uBAAuB;QACvB,IAAI,IAAI,CAAC,IAAI,YAAY,YAAM,IAAI,GAAG,CAAC,QAAQ,EAAE;YAC/C,IAAI,IAAI,GAAW,IAAI,CAAC,IAAI,CAAA;YAC5B,IAAI,EAAE,GAAG,CAAC,CAAA;YACV,OAAO,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,YAAY,YAAM,EAAE,EAAE,EAAE,EAAE;gBAC5D,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;aACtB;YAED,IAAI,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC3B,OAAO,IAAI,CAAA;aACZ;SACF;IACH,CAAC;CACF;AA4CC,0BAAO;AAzCT,MAAM,KAAK;IAOT,YAAY,IAAkB,EAAE,IAAW;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,WAAI,EAAE,CAAA;QAC9B,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;YAC5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SAC7B;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,IAAI,GAAG,GAAG,IAAI,CAAA;QACd,IAAI,GAAG,GAAY,IAAI,OAAO,CAAC;YAC7B,IAAI,EAAE,GAAG;YACT,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAA;QAGF,gDAAgD;QAChD,sDAAsD;QAGtD,IAAI,KAAK,GAAG,GAAG,CAAA;QACf,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,UAAI,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;YACjE,GAAG,GAAG,IAAA,UAAK,EAAC,GAAG,EAAE,GAAG,EAAE,SAAG,CAAC,CAAA;YAC1B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;SAC/B;QAGD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;CACF;AAMC,sBAAK"}
|
package/dist/lib/val.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Site } from './lang';
|
|
|
3
3
|
declare type ValMap = {
|
|
4
4
|
[key: string]: Val;
|
|
5
5
|
};
|
|
6
|
+
declare type ValList = Val[];
|
|
6
7
|
declare const DONE = -1;
|
|
7
8
|
declare const TOP: Val;
|
|
8
9
|
declare abstract class Val {
|
|
@@ -81,6 +82,16 @@ declare class MapVal extends Val {
|
|
|
81
82
|
get canon(): string;
|
|
82
83
|
gen(ctx?: Context): any;
|
|
83
84
|
}
|
|
85
|
+
declare class ListVal extends Val {
|
|
86
|
+
static SPREAD: symbol;
|
|
87
|
+
spread: {
|
|
88
|
+
cj: Val | undefined;
|
|
89
|
+
};
|
|
90
|
+
constructor(peg: ValList, ctx?: Context);
|
|
91
|
+
unify(peer: Val, ctx: Context): Val;
|
|
92
|
+
get canon(): string;
|
|
93
|
+
gen(ctx?: Context): any;
|
|
94
|
+
}
|
|
84
95
|
declare class ConjunctVal extends Val {
|
|
85
96
|
constructor(peg: Val[], ctx?: Context);
|
|
86
97
|
append(peer: Val): ConjunctVal;
|
|
@@ -112,4 +123,4 @@ declare class PrefVal extends Val {
|
|
|
112
123
|
get canon(): any;
|
|
113
124
|
gen(ctx?: Context): any;
|
|
114
125
|
}
|
|
115
|
-
export { DONE, Integer, Val, TOP, Nil, ScalarTypeVal, NumberVal, StringVal, BooleanVal, IntegerVal, MapVal, ConjunctVal, DisjunctVal, RefVal, PrefVal, };
|
|
126
|
+
export { DONE, Integer, Val, TOP, Nil, ScalarTypeVal, NumberVal, StringVal, BooleanVal, IntegerVal, MapVal, ListVal, ConjunctVal, DisjunctVal, RefVal, PrefVal, };
|