ranger-compiler 3.0.3 → 3.0.5

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.
@@ -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
- }