ranger-compiler 3.0.4 → 3.1.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/CHANGELOG.md +32 -0
- package/README.md +35 -1
- package/dist/Lang.rgr +142 -9
- package/dist/lib/JSON.rgr +31 -4
- package/dist/lib/RangerProcess.rgr +304 -0
- package/dist/lib/stdlib.rgr +33 -3
- package/dist/package.json +1 -1
- package/dist/rgrc.js +22720 -21131
- package/package.json +2 -2
- package/dist/lib/lib/ACEEditor.rgr +0 -5
- package/dist/lib/lib/Ajax.rgr +0 -196
- package/dist/lib/lib/CmdParams.rgr +0 -72
- package/dist/lib/lib/Crypto.rgr +0 -90
- package/dist/lib/lib/DOMLib.rgr +0 -307
- package/dist/lib/lib/Engine3D.rgr +0 -870
- package/dist/lib/lib/ImmutableVector.rgr +0 -364
- package/dist/lib/lib/IndexedDB.rgr +0 -32
- package/dist/lib/lib/JSON.rgr +0 -702
- package/dist/lib/lib/JinxProcess.rgr +0 -838
- package/dist/lib/lib/SQL.rgr +0 -44
- package/dist/lib/lib/ServiceLib.rgr +0 -9
- package/dist/lib/lib/Storage.rgr +0 -89
- package/dist/lib/lib/Time.rgr +0 -75
- package/dist/lib/lib/Timers.rgr +0 -176
- package/dist/lib/lib/TypedArrays.rgr +0 -14
- package/dist/lib/lib/ViewLib.rgr +0 -851
- package/dist/lib/lib/WebLib.rgr +0 -47
- package/dist/lib/lib/WebServerLib.rgr +0 -137
- package/dist/lib/lib/ranger-dir.rgr +0 -175
- package/dist/lib/lib/stdlib.rgr +0 -665
- package/dist/lib/lib/stdops.rgr +0 -168
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
; immutable map type
|
|
4
|
-
trait Map @params( K T S ) {
|
|
5
|
-
def elements@(weak):[K:T]
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
trait Vector @params( T S ) {
|
|
10
|
-
|
|
11
|
-
def start:int 0
|
|
12
|
-
def cardinality 3
|
|
13
|
-
def end:int 0
|
|
14
|
-
def elements@(weak):[T]
|
|
15
|
-
def parent@(weak):S
|
|
16
|
-
|
|
17
|
-
; inserting a new element inside the array
|
|
18
|
-
; you can re-use the arrays but the index ranges will change
|
|
19
|
-
|
|
20
|
-
fn localCopy:S () {
|
|
21
|
-
def obj (new S)
|
|
22
|
-
obj.start = start
|
|
23
|
-
obj.end = end
|
|
24
|
-
obj.parent = this.parent
|
|
25
|
-
obj.cardinality = cardinality
|
|
26
|
-
obj.elements = elements
|
|
27
|
-
return obj
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
fn set:S (idx:int item:T) {
|
|
31
|
-
|
|
32
|
-
if( idx >= start ) {
|
|
33
|
-
def res (this.localCopy())
|
|
34
|
-
res.elements = (make _:[T] (res.cardinality) item)
|
|
35
|
-
for elements e@(lives):T i {
|
|
36
|
-
if ( (res.start + i) != idx ) {
|
|
37
|
-
set res.elements i e
|
|
38
|
-
} {
|
|
39
|
-
set res.elements i item
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return res
|
|
43
|
-
}
|
|
44
|
-
def root (this.localCopy())
|
|
45
|
-
def res root
|
|
46
|
-
|
|
47
|
-
def p@(weak):S parent
|
|
48
|
-
while( (!null? p) && (idx < p.start) ) {
|
|
49
|
-
def newSlice@(lives) (p.localCopy())
|
|
50
|
-
res.parent = newSlice
|
|
51
|
-
res = newSlice
|
|
52
|
-
if(!null? p.parent) {
|
|
53
|
-
p = p.parent
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
def newSlice@(lives) (p.localCopy())
|
|
57
|
-
newSlice.elements = (make _:[T] (newSlice.cardinality) item)
|
|
58
|
-
for p.elements e@(lives):T i {
|
|
59
|
-
set newSlice.elements i e
|
|
60
|
-
}
|
|
61
|
-
set newSlice.elements (idx - newSlice.start) item
|
|
62
|
-
res.parent = newSlice
|
|
63
|
-
return root
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
fn insert:S (idx:int item:T) {
|
|
67
|
-
if( idx >= start ) {
|
|
68
|
-
def res (this.localCopy())
|
|
69
|
-
def use_card cardinality
|
|
70
|
-
if( ( array_length res.elements) >= (use_card - 1) ) {
|
|
71
|
-
use_card = ( array_length res.elements) + 1
|
|
72
|
-
}
|
|
73
|
-
res.elements = (make _:[T] (use_card) item)
|
|
74
|
-
for elements e@(lives):T i {
|
|
75
|
-
if ( res.start + i < idx ) {
|
|
76
|
-
set res.elements i e
|
|
77
|
-
} {
|
|
78
|
-
if( idx == ( res.start + i )) {
|
|
79
|
-
set res.elements i item
|
|
80
|
-
set res.elements (i + 1) e
|
|
81
|
-
} {
|
|
82
|
-
set res.elements (i + 1) e
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if( (idx - start) >= (array_length elements)) {
|
|
87
|
-
set res.elements (idx - start) item
|
|
88
|
-
}
|
|
89
|
-
res.start = start
|
|
90
|
-
res.end = end + 1
|
|
91
|
-
res.cardinality = use_card
|
|
92
|
-
return res
|
|
93
|
-
}
|
|
94
|
-
def root (this.localCopy())
|
|
95
|
-
def res root
|
|
96
|
-
res.start = start + 1
|
|
97
|
-
res.end = end + 1
|
|
98
|
-
def p@(weak):S parent
|
|
99
|
-
while( (!null? p) && (idx < p.start) ) {
|
|
100
|
-
def newSlice@(lives) (p.localCopy())
|
|
101
|
-
newSlice.start = newSlice.start + 1
|
|
102
|
-
newSlice.end = newSlice.end + 1
|
|
103
|
-
res.parent = newSlice
|
|
104
|
-
res = newSlice
|
|
105
|
-
if(!null? p.parent) {
|
|
106
|
-
p = p.parent
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
def newSlice@(lives) (p.localCopy())
|
|
111
|
-
def use_card newSlice.cardinality
|
|
112
|
-
if( ( array_length p.elements) >= (use_card - 1) ) {
|
|
113
|
-
use_card = ( array_length p.elements) + 1
|
|
114
|
-
}
|
|
115
|
-
newSlice.elements = (make _:[T] (use_card) item)
|
|
116
|
-
for p.elements e@(lives):T i {
|
|
117
|
-
if ( newSlice.start + i < idx ) {
|
|
118
|
-
set newSlice.elements i e
|
|
119
|
-
} {
|
|
120
|
-
if( idx == ( newSlice.start + i )) {
|
|
121
|
-
set newSlice.elements i item
|
|
122
|
-
set newSlice.elements (i + 1) e
|
|
123
|
-
} {
|
|
124
|
-
set newSlice.elements (i + 1) e
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
newSlice.end = newSlice.end + 1
|
|
130
|
-
newSlice.cardinality = use_card
|
|
131
|
-
if ( (idx - newSlice.start) >= p.cardinality ) {
|
|
132
|
-
newSlice.end = idx + 1
|
|
133
|
-
}
|
|
134
|
-
newSlice.parent = p.parent
|
|
135
|
-
res.parent = newSlice
|
|
136
|
-
return root
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
fn get:T (idx:int) {
|
|
140
|
-
if( idx < 0 ) {
|
|
141
|
-
; should be runtime error here...
|
|
142
|
-
return (itemAt elements 0)
|
|
143
|
-
}
|
|
144
|
-
if( idx >= start && idx < end ) {
|
|
145
|
-
return (itemAt elements (idx - start))
|
|
146
|
-
}
|
|
147
|
-
def p@(weak):S parent
|
|
148
|
-
while( (!null? p) && (idx < p.start) ) {
|
|
149
|
-
p = p.parent
|
|
150
|
-
}
|
|
151
|
-
if(!null? p ) {
|
|
152
|
-
return (itemAt p.elements (idx - p.start))
|
|
153
|
-
}
|
|
154
|
-
return (itemAt elements 0)
|
|
155
|
-
}
|
|
156
|
-
fn add:S (item:T) {
|
|
157
|
-
if((end - start) >= cardinality) {
|
|
158
|
-
def res (new S)
|
|
159
|
-
res.start = this.end
|
|
160
|
-
res.end = (this.end + 1)
|
|
161
|
-
res.parent = this
|
|
162
|
-
res.cardinality = (cardinality + 1)
|
|
163
|
-
res.elements = (make _:[T] (res.cardinality) item)
|
|
164
|
-
set res.elements 0 item
|
|
165
|
-
return res
|
|
166
|
-
}
|
|
167
|
-
def res (new S)
|
|
168
|
-
res.elements = (make _:[T] (cardinality) item)
|
|
169
|
-
for elements e@(lives):T i {
|
|
170
|
-
set res.elements i e
|
|
171
|
-
}
|
|
172
|
-
set res.elements (end - start) item
|
|
173
|
-
res.parent = parent
|
|
174
|
-
res.start = start
|
|
175
|
-
res.end = end + 1
|
|
176
|
-
res.cardinality = cardinality
|
|
177
|
-
return res
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
fn count:int () {
|
|
181
|
-
return end
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
; TODO: faster version ....
|
|
185
|
-
fn map:S (cb:(_:T (item:T)) ) {
|
|
186
|
-
def len (this.count())
|
|
187
|
-
def res:S (new S)
|
|
188
|
-
def cnt (this.count())
|
|
189
|
-
def i 0
|
|
190
|
-
while( i < cnt ) {
|
|
191
|
-
def item (this.get(i))
|
|
192
|
-
; set res i (cb(item))
|
|
193
|
-
def new_value (cb(item))
|
|
194
|
-
res = (res.add(new_value))
|
|
195
|
-
i = i + 1
|
|
196
|
-
}
|
|
197
|
-
return res
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
fn mapper:S (cb:(_:T (item:T)) ) {
|
|
201
|
-
def len (this.count())
|
|
202
|
-
def res:S (new S)
|
|
203
|
-
def cnt (this.count())
|
|
204
|
-
def i 0
|
|
205
|
-
while( i < cnt ) {
|
|
206
|
-
def item (this.get(i))
|
|
207
|
-
; set res i (cb(item))
|
|
208
|
-
def new_value (cb(item))
|
|
209
|
-
res = (res.add(new_value))
|
|
210
|
-
i = i + 1
|
|
211
|
-
}
|
|
212
|
-
return res
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
operator type:Vector all {
|
|
219
|
-
|
|
220
|
-
; couple of trait test functions for now...
|
|
221
|
-
fn hello@(weak):S () {
|
|
222
|
-
print "immutable says hi! my size is " + (self.count())
|
|
223
|
-
return self
|
|
224
|
-
}
|
|
225
|
-
fn hello@(weak):S (msg:string) {
|
|
226
|
-
print "immutable sends message " + msg + " AND my size is " + (self.count())
|
|
227
|
-
return self
|
|
228
|
-
}
|
|
229
|
-
; fn get:T (idx:int) {
|
|
230
|
-
fn itemAt:T (idx:int) {
|
|
231
|
-
; def val:T (self.get(idx))
|
|
232
|
-
def val (self.get(idx))
|
|
233
|
-
return val
|
|
234
|
-
}
|
|
235
|
-
fn imm_itemAt:T (idx:int) {
|
|
236
|
-
; def val:T (self.get(idx))
|
|
237
|
-
def val (self.get(idx))
|
|
238
|
-
return val
|
|
239
|
-
}
|
|
240
|
-
; fn push:S () {}
|
|
241
|
-
fn push:S (item:T) {
|
|
242
|
-
return (self.add(item))
|
|
243
|
-
}
|
|
244
|
-
fn +:S (item:T) {
|
|
245
|
-
return (self.add(item))
|
|
246
|
-
}
|
|
247
|
-
fn last:T () {
|
|
248
|
-
; def len (self.count())
|
|
249
|
-
; def last_idx ((self.count()) - 1)
|
|
250
|
-
; return (self.get( last_idx ))
|
|
251
|
-
return (itemAt self ((self.count()) - 1) )
|
|
252
|
-
}
|
|
253
|
-
fn array_length:int () {
|
|
254
|
-
return (self.count())
|
|
255
|
-
}
|
|
256
|
-
fn length:int () {
|
|
257
|
-
return (self.count())
|
|
258
|
-
}
|
|
259
|
-
fn forEach:void (cb:(_:void (item:T))) {
|
|
260
|
-
def cnt (self.count())
|
|
261
|
-
def i 0
|
|
262
|
-
while( i < cnt ) {
|
|
263
|
-
def item (itemAt self i)
|
|
264
|
-
cb(item)
|
|
265
|
-
i = i + 1
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
fn map:S ( cb:(_:T (item:T)) ) {
|
|
270
|
-
def len (self.count())
|
|
271
|
-
def res (new S)
|
|
272
|
-
def cnt (self.count())
|
|
273
|
-
def i 0
|
|
274
|
-
while( i < cnt ) {
|
|
275
|
-
def item (itemAt self i)
|
|
276
|
-
; set res i (cb(item)
|
|
277
|
-
def value (cb(item))
|
|
278
|
-
res = res.add(value)
|
|
279
|
-
i = i + 1
|
|
280
|
-
}
|
|
281
|
-
return res
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
; TODO: faster version ....
|
|
285
|
-
fn map:[K] (cb:(_:K (item:T)) to@(noeval):[K] ) {
|
|
286
|
-
def len (self.count())
|
|
287
|
-
def res:[K]
|
|
288
|
-
def cnt (self.count())
|
|
289
|
-
def i 0
|
|
290
|
-
while( i < cnt ) {
|
|
291
|
-
def item (itemAt self i)
|
|
292
|
-
; set res i (cb(item))
|
|
293
|
-
push res (cb(item))
|
|
294
|
-
i = i + 1
|
|
295
|
-
}
|
|
296
|
-
return res
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
operator type:Map all {
|
|
303
|
-
fn imm_keys:[K] () {
|
|
304
|
-
return (keys self.elements)
|
|
305
|
-
}
|
|
306
|
-
fn keys:[K] () {
|
|
307
|
-
return (keys self.elements)
|
|
308
|
-
}
|
|
309
|
-
fn get@(optional):T (key:K) {
|
|
310
|
-
return (get self.elements key)
|
|
311
|
-
}
|
|
312
|
-
fn imm_get@(optional):T (key:K) {
|
|
313
|
-
return (get self.elements key)
|
|
314
|
-
}
|
|
315
|
-
fn remap:S () {
|
|
316
|
-
def obj (new S)
|
|
317
|
-
return obj
|
|
318
|
-
}
|
|
319
|
-
fn imm_has:boolean (key:K) {
|
|
320
|
-
return (has self.elements key)
|
|
321
|
-
}
|
|
322
|
-
fn has:boolean (key:K) {
|
|
323
|
-
return (has self.elements key)
|
|
324
|
-
}
|
|
325
|
-
fn imm_set:S (key:K value:T) {
|
|
326
|
-
def c (new S)
|
|
327
|
-
def keys ( keys self.elements)
|
|
328
|
-
for keys k:string i {
|
|
329
|
-
if(k==key) {
|
|
330
|
-
|
|
331
|
-
} {
|
|
332
|
-
set c.elements k (unwrap (get self.elements k))
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
set c.elements key value
|
|
336
|
-
return c
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
operator type:Map all {
|
|
341
|
-
fn set:S (key:K value:T) {
|
|
342
|
-
def c (new S)
|
|
343
|
-
def keys ( keys self.elements)
|
|
344
|
-
for keys k:string i {
|
|
345
|
-
if(k==key) {
|
|
346
|
-
|
|
347
|
-
} {
|
|
348
|
-
set c.elements k (unwrap (get self.elements k))
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
set c.elements key value
|
|
352
|
-
return c
|
|
353
|
-
}
|
|
354
|
-
fn forEach@(weak):S ( cb:(_:void (value:T key:K)) ) {
|
|
355
|
-
def keys (keys self.elements)
|
|
356
|
-
for keys key:K i {
|
|
357
|
-
cb( (unwrap (get self.elements key)) key )
|
|
358
|
-
}
|
|
359
|
-
return self
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
systemclass IndexedDBDatabase {
|
|
3
|
-
es6 IDBDatabase
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
; window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB
|
|
7
|
-
|
|
8
|
-
operator type:void es6 {
|
|
9
|
-
|
|
10
|
-
fn open_idb:IDBDatabase (name:sting version:int) ('(window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB).open('(e 1)', '(e 2)')')
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
fn schema:SQLSchemaBuilder (name:string version:int) (`lf.schema.create(`(e 1)`,`(e 2)`)`)
|
|
15
|
-
fn create_table:SQLSchemaTable ( s:SQLSchemaBuilder name:string ) ( (e 1) `.createTable(`(e 2)`)`)
|
|
16
|
-
|
|
17
|
-
fn add_int (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.INTEGER)`)
|
|
18
|
-
fn add_string (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.STRING)`)
|
|
19
|
-
fn add_datetime (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.DATE_TIME)`)
|
|
20
|
-
fn add_boolean (t:SQLSchemaTable fieldName:string ) ((e 1) `.addColumn(`(e 2)`, lf.Type.BOOLEAN)`)
|
|
21
|
-
fn set_primary_key (t:SQLSchemaTable fieldName:string) ((e 1) `.addPrimaryKey([`(e 2)`])`)
|
|
22
|
-
fn create_index (t:SQLSchemaTable indexName:string fields:[string]) ( (e 1) `.addIndex(`(e 2)`,`(e 3)`,false,lf.Order.DESC)`)
|
|
23
|
-
|
|
24
|
-
fn connect@(async):SQLDatabase (b:SQLSchemaBuilder) ('await ' (e 1) '.connect()')
|
|
25
|
-
fn getSchema:DBSchema (db:SQLDatabase) ( (e 1) '.getSchema()')
|
|
26
|
-
fn getTable:DBTable (db:DBSchema name:string) ( (e 1) '.table(' (e 2) ')')
|
|
27
|
-
|
|
28
|
-
fn addRow:DBInsertableRow (tbl:DBTable row:JSONDataObject) ( (e 1) '.createRow(' (e 2) ')')
|
|
29
|
-
fn insert@(async):void (db:SQLDatabase t:DBTable rows:[DBInsertableRow]) ('await (' (e 1) '.insertOrReplace().into(' (e 2) ').values(' (e 3) ').exec())')
|
|
30
|
-
; fn query@(async):[JSONDataObject] (db:SQLDatabase t:DBTable id:int ) ('await (' (e 1) '.select().from(' (e 2) ').where(' (e 2) '.id.eq(' (e 3)')).exec())')
|
|
31
|
-
fn select@(async):[JSONDataObject] (db:SQLDatabase t:DBTable id:int ) ('await (' (e 1) '.select().from(' (e 2) ').where(' (e 2) '.id.eq(' (e 3)')).exec())')
|
|
32
|
-
}
|