zkjson 0.1.19 → 0.1.21
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/package.json +1 -1
- package/parse.js +107 -148
- package/uint.js +127 -4
package/package.json
CHANGED
package/parse.js
CHANGED
@@ -1,17 +1,9 @@
|
|
1
|
-
const { length, next, arr: _arr, push, pop, last } = require("./uint")
|
1
|
+
const { toArray,concat, sum, get, popArray, pushArray, length, next, arr: _arr, push, pop, last } = require("./uint")
|
2
2
|
const _null_ = [110, 117, 108, 108]
|
3
3
|
const _true_ = [116, 114, 117, 101]
|
4
4
|
const _false_ = [102, 97, 108, 115, 101]
|
5
5
|
|
6
|
-
const eql = (a, b) => {
|
7
|
-
if (a.length != b.length) return 0
|
8
|
-
for (let i = 0; i < b.length; i++) {
|
9
|
-
if (a[i] != b[i]) return 0
|
10
|
-
}
|
11
|
-
return 1
|
12
|
-
}
|
13
|
-
|
14
|
-
const eql2 = (a, b, blen, size = 100) => {
|
6
|
+
const eql = (a, b, blen, size = 100) => {
|
15
7
|
var alen = length(a, size)
|
16
8
|
if (alen != blen) return 0
|
17
9
|
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
@@ -22,64 +14,28 @@ const eql2 = (a, b, blen, size = 100) => {
|
|
22
14
|
return 1
|
23
15
|
}
|
24
16
|
|
25
|
-
const constVal = (_v, type) => {
|
26
|
-
let val = []
|
27
|
-
val.push(type)
|
28
|
-
if (type == 1) {
|
29
|
-
if (eql(_v, _true_) == 1) {
|
30
|
-
val.push(1)
|
31
|
-
} else {
|
32
|
-
val.push(0)
|
33
|
-
}
|
34
|
-
} else if (type == 3) {
|
35
|
-
val.push(_v.length)
|
36
|
-
for (let v of _v) {
|
37
|
-
val.push(v)
|
38
|
-
}
|
39
|
-
} else if (type == 2) {
|
40
|
-
if (_v[0] == 45) {
|
41
|
-
val.push(0)
|
42
|
-
} else {
|
43
|
-
val.push(1)
|
44
|
-
}
|
45
|
-
let after = 0
|
46
|
-
let right = 0
|
47
|
-
let digits = 0
|
48
|
-
for (let v of _v) {
|
49
|
-
if (v == 46) {
|
50
|
-
after = 1
|
51
|
-
} else if (v != 45) {
|
52
|
-
if (after == 1) right += 1
|
53
|
-
digits = digits * 10 + (v - 48)
|
54
|
-
}
|
55
|
-
}
|
56
|
-
val.push(right)
|
57
|
-
val.push(digits)
|
58
|
-
}
|
59
|
-
return val
|
60
|
-
}
|
61
17
|
|
62
|
-
const
|
18
|
+
const constVal = (_v, type, size) => {
|
63
19
|
var val = _arr(size)
|
64
|
-
push(val, size, 9, type)
|
20
|
+
val = push(val, size, 9, type)
|
65
21
|
if (type == 1) {
|
66
|
-
if (
|
67
|
-
push(val, size, 9, 1)
|
22
|
+
if (eql(_v, _true_, 4, size) == 1) {
|
23
|
+
val = push(val, size, 9, 1)
|
68
24
|
} else {
|
69
|
-
push(val, size, 9, 0)
|
25
|
+
val = push(val, size, 9, 0)
|
70
26
|
}
|
71
27
|
} else if (type == 3) {
|
72
|
-
push(length(_v, size))
|
28
|
+
val = push(val, size, 9, length(_v, size))
|
73
29
|
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
74
30
|
while (c[5] == 0) {
|
75
31
|
c = next(_v, c)
|
76
|
-
push(val, size, 9, c[0])
|
32
|
+
val = push(val, size, 9, c[0])
|
77
33
|
}
|
78
34
|
} else if (type == 2) {
|
79
|
-
if (_v
|
80
|
-
push(val, size, 9, 0)
|
35
|
+
if (get(_v, size, 0) == 45) {
|
36
|
+
val = push(val, size, 9, 0)
|
81
37
|
} else {
|
82
|
-
push(val, size, 9, 1)
|
38
|
+
val = push(val, size, 9, 1)
|
83
39
|
}
|
84
40
|
let after = 0
|
85
41
|
let right = 0
|
@@ -94,58 +50,57 @@ const constVal2 = (_v, type, size) => {
|
|
94
50
|
digits = digits * 10 + (c[0] - 48)
|
95
51
|
}
|
96
52
|
}
|
97
|
-
push(val, size, 9, right)
|
98
|
-
push(val, size, 9, digits)
|
53
|
+
val = push(val, size, 9, right)
|
54
|
+
val = push(val, size, 9, digits)
|
99
55
|
}
|
100
56
|
return val
|
101
57
|
}
|
102
58
|
|
103
|
-
const constPath = p => {
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
59
|
+
const constPath = (p, size) => {
|
60
|
+
var pth2 = _arr(size)
|
61
|
+
var len = get(p,size,0);
|
62
|
+
pth2 = push(pth2,size,9,len)
|
63
|
+
for(var i = 0;i < len; i++){
|
64
|
+
var len2 = get(p,size,i + 1);
|
65
|
+
var _sum = sum(p, size, 9, 1, 1 + i)
|
66
|
+
var first = get(p, size, 1 + len + _sum)
|
67
|
+
if(first == 0){
|
68
|
+
pth2 = push(pth2,size,9,0)
|
69
|
+
}else{
|
70
|
+
pth2 = push(pth2,size,9,len2)
|
71
|
+
}
|
72
|
+
for(var i2 = 0;i2 < len2; i2++){
|
73
|
+
var v = get(p, size, 1 + len + _sum + i2)
|
74
|
+
pth2 = push(pth2,size,9,v)
|
113
75
|
}
|
114
76
|
}
|
115
|
-
return
|
77
|
+
return pth2
|
116
78
|
}
|
117
79
|
|
118
|
-
const
|
119
|
-
|
120
|
-
var
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
for (let v2 of _v) pth.push(v2)
|
125
|
-
} else {
|
126
|
-
pth.push(0)
|
127
|
-
pth.push(0)
|
128
|
-
pth.push(_v)
|
80
|
+
const isNumber = (val,size, digit) =>{
|
81
|
+
var len = length(val, size)
|
82
|
+
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
83
|
+
while (c[5] == 0) {
|
84
|
+
c = next(val, c)
|
85
|
+
if(c[0] == 47 || c[0] < 45 || c[0] > 57) return false
|
129
86
|
}
|
130
|
-
|
131
|
-
return
|
87
|
+
|
88
|
+
return true
|
132
89
|
}
|
133
90
|
|
134
91
|
const parse = (str, size = 100) => {
|
135
|
-
var val =
|
136
|
-
var val2 = _arr(size)
|
92
|
+
var val = _arr(size)
|
137
93
|
var inVal = 0
|
138
94
|
var isNum = 0
|
139
95
|
var esc = 0
|
140
96
|
var nextKey = 0
|
141
97
|
var arr = 0
|
142
98
|
var obj = 0
|
143
|
-
var path =
|
144
|
-
var path2 = _arr(size)
|
99
|
+
var path = _arr(size)
|
145
100
|
var ao = _arr(5)
|
146
101
|
var ind = _arr(5)
|
147
102
|
var err = 0
|
148
|
-
var json =
|
103
|
+
var json = _arr(size)
|
149
104
|
let c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
150
105
|
while (c[5] == 0) {
|
151
106
|
c = next(str, c)
|
@@ -155,84 +110,82 @@ const parse = (str, size = 100) => {
|
|
155
110
|
esc = 1
|
156
111
|
} else if (s == 34) {
|
157
112
|
if (esc == 1) {
|
158
|
-
val
|
159
|
-
push(val2, size, 9, s)
|
113
|
+
val = push(val, size, 9, s)
|
160
114
|
} else {
|
161
115
|
inVal = 0
|
162
116
|
if (nextKey == 1 && last(ao, 5) == 1) {
|
163
|
-
path
|
117
|
+
path = pushArray(path,size,9,val,size)
|
164
118
|
} else {
|
165
119
|
if (last(ao, 5) == 2) {
|
166
120
|
var _ind = last(ind, 5)
|
167
|
-
|
121
|
+
var __ind = _arr(size)
|
122
|
+
__ind = push(__ind, size, 9, 0)
|
123
|
+
__ind = push(__ind, size, 9, _ind)
|
124
|
+
path = pushArray(path, size, 9, __ind, size)
|
168
125
|
ind = pop(ind, 5)
|
169
|
-
push(ind, 5, 9, _ind + 1)
|
126
|
+
ind = push(ind, 5, 9, _ind + 1)
|
170
127
|
}
|
171
|
-
|
172
|
-
|
173
|
-
json.push([constPath(path), constVal(val, 3)])
|
174
|
-
path.pop()
|
128
|
+
json = concat(json, concat(constPath(path, size),constVal(val,3,size),size,9), size,9);
|
129
|
+
popArray(path, size, 9)
|
175
130
|
}
|
176
131
|
|
177
|
-
val =
|
178
|
-
val2 = _arr(size)
|
132
|
+
val = _arr(size)
|
179
133
|
nextKey = 0
|
180
134
|
}
|
181
135
|
esc = 0
|
182
136
|
} else {
|
183
|
-
|
184
|
-
push(val2, size, 9, s)
|
137
|
+
push(val, size, 9, s)
|
185
138
|
esc = 0
|
186
139
|
}
|
187
140
|
} else if (isNum == 1) {
|
188
141
|
if (s == 44 || s == 32 || s == 125 || s == 93) {
|
189
142
|
if (last(ao, 5) == 2) {
|
190
143
|
var _ind = last(ind, 5)
|
191
|
-
|
144
|
+
var __ind = _arr(size)
|
145
|
+
__ind = push(__ind, size, 9, 0)
|
146
|
+
__ind = push(__ind, size, 9, _ind)
|
147
|
+
path = pushArray(path, size, 9, __ind, size)
|
192
148
|
ind = pop(ind, 5)
|
193
|
-
push(ind, 5, 9, _ind + 1)
|
149
|
+
ind = push(ind, 5, 9, _ind + 1)
|
150
|
+
|
194
151
|
}
|
195
152
|
if (
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
153
|
+
eql(val, _true_, 4, size) == 0 &&
|
154
|
+
eql(val, _false_, 5, size) == 0 &&
|
155
|
+
eql(val, _null_, 4, size) == 0 &&
|
156
|
+
isNumber(val, size, 9) == 0
|
200
157
|
) {
|
201
158
|
err = 1
|
202
159
|
}
|
203
|
-
// console.log("val: ", `< ${path.join(".")} >`, val)
|
204
160
|
var type = 2
|
205
|
-
if (
|
161
|
+
if (eql(val, _null_, 4, size) == 1) {
|
206
162
|
type = 0
|
207
163
|
} else if (
|
208
|
-
|
209
|
-
|
164
|
+
eql(val, _true_, 4, size) == 1 ||
|
165
|
+
eql(val, _false_, 5, size) == 1
|
210
166
|
) {
|
211
167
|
type = 1
|
212
168
|
}
|
213
|
-
|
214
|
-
|
215
|
-
path.pop()
|
169
|
+
json = concat(json, concat(constPath(path, size),constVal(val,type,size),size,9), size,9);
|
170
|
+
popArray(path, size, 9)
|
216
171
|
if (s == 93) {
|
217
172
|
if (last(ao, 5) != 2) err = 1
|
218
173
|
ao.pop()
|
219
|
-
path
|
174
|
+
popArray(path, size, 9)
|
220
175
|
arr--
|
221
176
|
pop(ind, 5)
|
222
177
|
}
|
223
178
|
if (s == 125) {
|
224
179
|
if (last(ao, 5) != 1) err = 1
|
225
180
|
pop(ao, 5)
|
226
|
-
path
|
181
|
+
popArray(path, size, 9)
|
227
182
|
obj--
|
228
183
|
}
|
229
184
|
isNum = 0
|
230
|
-
val =
|
231
|
-
val2 = _arr(size)
|
185
|
+
val = _arr(size)
|
232
186
|
if (s == 44) nextKey = 1
|
233
187
|
} else {
|
234
|
-
val
|
235
|
-
push(val2, size, 9, s)
|
188
|
+
val = push(val, size, 9, s)
|
236
189
|
}
|
237
190
|
} else if (s == 34) {
|
238
191
|
inVal = 1
|
@@ -246,69 +199,75 @@ const parse = (str, size = 100) => {
|
|
246
199
|
s != 125
|
247
200
|
) {
|
248
201
|
isNum = 1
|
249
|
-
val
|
250
|
-
push(val2, size, 9, s)
|
202
|
+
val = push(val, size, 9, s)
|
251
203
|
} else {
|
252
204
|
if (s != 32) {
|
253
205
|
if (s == 123 || s == 44) nextKey = 1
|
254
206
|
if (s == 123) {
|
255
207
|
if (last(ao, 5) == 2) {
|
256
208
|
var _ind = last(ind, 5)
|
257
|
-
|
209
|
+
var __ind = _arr(size)
|
210
|
+
__ind = push(__ind, size, 9, 0)
|
211
|
+
__ind = push(__ind, size, 9, _ind)
|
212
|
+
path = pushArray(path, size, 9, __ind, size)
|
258
213
|
ind = pop(ind, 5)
|
259
|
-
push(ind, 5, 9, _ind + 1)
|
214
|
+
ind = push(ind, 5, 9, _ind + 1)
|
260
215
|
}
|
261
|
-
push(ao, 5, 9, 1)
|
216
|
+
ao = push(ao, 5, 9, 1)
|
262
217
|
obj++
|
263
218
|
}
|
264
219
|
if (s == 125) {
|
265
220
|
if (last(ao, 5) != 1) err = 1
|
266
221
|
pop(ao, 5)
|
267
|
-
path
|
222
|
+
popArray(path, size, 9)
|
268
223
|
obj--
|
269
224
|
}
|
270
225
|
if (s == 91) {
|
271
226
|
if (last(ao, 5) == 2) {
|
272
227
|
var _ind = last(ind, 5)
|
273
|
-
|
228
|
+
var __ind = _arr(size)
|
229
|
+
__ind = push(__ind, size, 9, 0)
|
230
|
+
__ind = push(__ind, size, 9, _ind)
|
231
|
+
path = pushArray(path, size, 9, __ind, size)
|
274
232
|
ind = pop(ind, 5)
|
275
|
-
push(ind, 5, 9, _ind + 1)
|
233
|
+
ind = push(ind, 5, 9, _ind + 1)
|
276
234
|
}
|
277
|
-
push(ind, 5, 9, 0)
|
278
|
-
push(ao, 5, 9, 2)
|
235
|
+
ind = push(ind, 5, 9, 0)
|
236
|
+
ao = push(ao, 5, 9, 2)
|
279
237
|
arr++
|
280
238
|
}
|
281
239
|
if (s == 93) {
|
282
240
|
if (last(ao, 5) != 2) err = 1
|
283
|
-
pop(ao, 5)
|
284
|
-
pop(ind, 5)
|
285
|
-
path
|
241
|
+
ao = pop(ao, 5)
|
242
|
+
ind = pop(ind, 5)
|
243
|
+
path = popArray(path, size, 9)
|
286
244
|
arr--
|
287
245
|
}
|
288
246
|
}
|
289
247
|
}
|
290
248
|
}
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
249
|
+
if (length(val, size) != 0) {
|
250
|
+
var type = 4
|
251
|
+
if(eql(val,_null_,4,size) == 1){
|
252
|
+
type = 0
|
253
|
+
isNum = 0
|
254
|
+
}else if(
|
255
|
+
eql(val, _true_, 4, size) == 1 ||
|
256
|
+
eql(val, _false_, 5, size)
|
257
|
+
){
|
258
|
+
type = 1
|
259
|
+
isNum = 0
|
260
|
+
} else if (isNumber(val, size, 9) == 1){
|
261
|
+
type = 2
|
262
|
+
isNum = 0
|
263
|
+
}
|
264
|
+
json = concat(json, concat(constPath(path, size),constVal(val,type, size), size, 9), size,9);
|
298
265
|
}
|
299
266
|
if (ao.length > 0) err = 1
|
300
267
|
if (ind.length > 0) err = 1
|
301
268
|
if (inVal) err = 1
|
302
269
|
if (isNum) err = 1
|
303
|
-
|
304
|
-
for (var v of json) {
|
305
|
-
for (var v2 of v) {
|
306
|
-
for (var v3 of v2) {
|
307
|
-
j = push(j, size, 9, v3)
|
308
|
-
}
|
309
|
-
}
|
310
|
-
}
|
311
|
-
return j
|
270
|
+
return json
|
312
271
|
}
|
313
272
|
|
314
273
|
module.exports = { parse }
|
package/uint.js
CHANGED
@@ -26,22 +26,113 @@ const toArray = (json, size) => {
|
|
26
26
|
return j
|
27
27
|
}
|
28
28
|
|
29
|
+
|
30
|
+
const arrPush = (json, size, digit, index, val) => {
|
31
|
+
var len = get(json, size, 0)
|
32
|
+
var _sum = sum(json, size, digit, 1, index + 2)
|
33
|
+
var at = _sum + 1 + len
|
34
|
+
json = insert(json, size, digit, at, val)
|
35
|
+
var alen = get(json, size, index + 1)
|
36
|
+
json = replace(json, size, digit, index + 1, alen + 1)
|
37
|
+
return json
|
38
|
+
}
|
39
|
+
|
40
|
+
const arrGet = (json, size, digit, index, index2) => {
|
41
|
+
var len = get(json, size, 0)
|
42
|
+
var _sum = sum(json, size, digit, 1, index + 1)
|
43
|
+
var at = _sum + 1 + len + index2
|
44
|
+
return get(json, size, at)
|
45
|
+
}
|
46
|
+
|
47
|
+
const pushArray = (json, size, digit, _arr, asize) => {
|
48
|
+
var jlen = length(json,size)
|
49
|
+
var alen = 0
|
50
|
+
if(jlen == 0) {
|
51
|
+
json = push(json, size, digit, 1)
|
52
|
+
}else{
|
53
|
+
alen = get(json, size, 0)
|
54
|
+
json = replace(json, size, digit, 0, alen + 1)
|
55
|
+
}
|
56
|
+
var len = length(_arr,size)
|
57
|
+
json = insert(json, size, digit, alen + 1, len)
|
58
|
+
var c = [0, asize, 0, 0, 0, 0, 0, 0, 0]
|
59
|
+
while (c[5] == 0) {
|
60
|
+
c = next(_arr, c)
|
61
|
+
json = push(json, size, digit, c[0])
|
62
|
+
}
|
63
|
+
return json
|
64
|
+
}
|
65
|
+
|
66
|
+
const popArray = (json, size, digit) => {
|
67
|
+
var jlen = length(json,size)
|
68
|
+
var alen = 0
|
69
|
+
if(jlen == 0) {
|
70
|
+
throw Error()
|
71
|
+
}else{
|
72
|
+
alen = get(json, size, 0)
|
73
|
+
}
|
74
|
+
if(alen == 1) return []
|
75
|
+
var len = get(json, size, alen)
|
76
|
+
json = replace(json, size, digit, 0, alen - 1)
|
77
|
+
var _sum = sum(json, size, digit, 1, alen)
|
78
|
+
var start = alen + 1 +_sum
|
79
|
+
var end = start + len + 1
|
80
|
+
json = remove(json, size, digit, start, end)
|
81
|
+
json = remove(json, size, digit, alen, alen + 1)
|
82
|
+
return json
|
83
|
+
}
|
84
|
+
|
85
|
+
|
29
86
|
const length = (json, size) => {
|
30
87
|
var _len = 0
|
31
88
|
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
32
|
-
var nonzero = 0
|
33
89
|
while (c[5] == 0) {
|
34
90
|
c = next(json, c)
|
35
|
-
if (c[0] > 0) nonzero = 1
|
36
91
|
_len++
|
37
92
|
}
|
38
|
-
if (
|
93
|
+
if (json[0] != 0) {
|
39
94
|
return _len
|
40
95
|
} else {
|
41
96
|
return 0
|
42
97
|
}
|
43
98
|
}
|
44
99
|
|
100
|
+
const sum = (json, size, digit, start, end) =>{
|
101
|
+
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
102
|
+
var _sum = 0
|
103
|
+
var i = 0
|
104
|
+
while (c[5] == 0) {
|
105
|
+
c = next(json, c)
|
106
|
+
if (i >= start && i < end) _sum += c[0]
|
107
|
+
i++
|
108
|
+
}
|
109
|
+
return _sum
|
110
|
+
}
|
111
|
+
|
112
|
+
const mul = (json, size, digit, start, end) =>{
|
113
|
+
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
114
|
+
var _mul = 0
|
115
|
+
var i = 0
|
116
|
+
while (c[5] == 0) {
|
117
|
+
c = next(json, c)
|
118
|
+
if (i >= start && i < end) _mul *= c[0]
|
119
|
+
i++
|
120
|
+
}
|
121
|
+
return _mul
|
122
|
+
}
|
123
|
+
|
124
|
+
const remove = (json, size, digit, start, end) =>{
|
125
|
+
var _arr = arr(size)
|
126
|
+
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
127
|
+
var i = 0
|
128
|
+
while (c[5] == 0) {
|
129
|
+
c = next(json, c)
|
130
|
+
if (i < start || i >= end) push(_arr, size, digit, c[0])
|
131
|
+
i++
|
132
|
+
}
|
133
|
+
return _arr
|
134
|
+
}
|
135
|
+
|
45
136
|
const slice = (json, size, digit, start, end) =>{
|
46
137
|
var _arr = arr(size)
|
47
138
|
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
@@ -141,6 +232,18 @@ const unshift = (json, size, digit, num) => {
|
|
141
232
|
return _arr
|
142
233
|
}
|
143
234
|
|
235
|
+
const concat = (json, json2, size, digit) => {
|
236
|
+
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
237
|
+
var i = 0
|
238
|
+
if (json2[0] !== 0) {
|
239
|
+
while (c[5] == 0) {
|
240
|
+
c = next(json2, c)
|
241
|
+
json = push(json, size, digit, c[0])
|
242
|
+
i++
|
243
|
+
}
|
244
|
+
}
|
245
|
+
return json
|
246
|
+
}
|
144
247
|
const pop = (json, size, overflow = 3) => {
|
145
248
|
var l = 0
|
146
249
|
var ll = 0
|
@@ -421,5 +524,25 @@ const next = (json, c) => {
|
|
421
524
|
}
|
422
525
|
|
423
526
|
module.exports = {
|
424
|
-
next,
|
527
|
+
next,
|
528
|
+
arr,
|
529
|
+
push,
|
530
|
+
length,
|
531
|
+
last,
|
532
|
+
pop,
|
533
|
+
toArray,
|
534
|
+
shift,
|
535
|
+
unshift,
|
536
|
+
slice,
|
537
|
+
insert,
|
538
|
+
replace,
|
539
|
+
get,
|
540
|
+
pushArray,
|
541
|
+
arrPush,
|
542
|
+
sum,
|
543
|
+
mul,
|
544
|
+
arrGet,
|
545
|
+
remove,
|
546
|
+
popArray,
|
547
|
+
concat
|
425
548
|
}
|