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
package/dist/lib/lib/SQL.rgr
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
systemclass SQLSchemaBuilder {
|
|
4
|
-
es6 Object
|
|
5
|
-
}
|
|
6
|
-
systemclass SQLSchemaTable {
|
|
7
|
-
es6 Object
|
|
8
|
-
}
|
|
9
|
-
systemclass SQLDatabase {
|
|
10
|
-
es6 Object
|
|
11
|
-
}
|
|
12
|
-
systemclass DBSchema {
|
|
13
|
-
es6 Object
|
|
14
|
-
}
|
|
15
|
-
systemclass DBTable {
|
|
16
|
-
es6 Object
|
|
17
|
-
}
|
|
18
|
-
systemclass DBInsertableRow {
|
|
19
|
-
es6 Object
|
|
20
|
-
}
|
|
21
|
-
systemclass DBTableQuery {
|
|
22
|
-
es6 Object
|
|
23
|
-
}
|
|
24
|
-
operator type:void es6 {
|
|
25
|
-
fn schema:SQLSchemaBuilder (name:string version:int) (`lf.schema.create(`(e 1)`,`(e 2)`)`)
|
|
26
|
-
fn create_table:SQLSchemaTable ( s:SQLSchemaBuilder name:string ) ( (e 1) `.createTable(`(e 2)`)`)
|
|
27
|
-
|
|
28
|
-
fn add_int (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.INTEGER)`)
|
|
29
|
-
fn add_string (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.STRING)`)
|
|
30
|
-
fn add_datetime (t:SQLSchemaTable fieldName:string ) ( (e 1) `.addColumn(`(e 2)`, lf.Type.DATE_TIME)`)
|
|
31
|
-
fn add_boolean (t:SQLSchemaTable fieldName:string ) ((e 1) `.addColumn(`(e 2)`, lf.Type.BOOLEAN)`)
|
|
32
|
-
fn set_primary_key (t:SQLSchemaTable fieldName:string) ((e 1) `.addPrimaryKey([`(e 2)`])`)
|
|
33
|
-
fn create_index (t:SQLSchemaTable indexName:string fields:[string]) ( (e 1) `.addIndex(`(e 2)`,`(e 3)`,false,lf.Order.DESC)`)
|
|
34
|
-
|
|
35
|
-
fn connect@(async):SQLDatabase (b:SQLSchemaBuilder) ('await ' (e 1) '.connect()')
|
|
36
|
-
fn getSchema:DBSchema (db:SQLDatabase) ( (e 1) '.getSchema()')
|
|
37
|
-
fn getTable:DBTable (db:DBSchema name:string) ( (e 1) '.table(' (e 2) ')')
|
|
38
|
-
|
|
39
|
-
fn addRow:DBInsertableRow (tbl:DBTable row:JSONDataObject) ( (e 1) '.createRow(' (e 2) ')')
|
|
40
|
-
fn insert@(async):void (db:SQLDatabase t:DBTable rows:[DBInsertableRow]) ('await (' (e 1) '.insertOrReplace().into(' (e 2) ').values(' (e 3) ').exec())')
|
|
41
|
-
; 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())')
|
|
42
|
-
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())')
|
|
43
|
-
}
|
|
44
|
-
|
package/dist/lib/lib/Storage.rgr
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
; https://developer.android.com/guide/topics/data/data-storage.html#filesInternal
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
systemclass StorageOutputStream {
|
|
6
|
-
java7 FileOutputStream ( (imp 'java.io.FileOutputStream'))
|
|
7
|
-
}
|
|
8
|
-
systemclass StorageInputStream {
|
|
9
|
-
java7 FileInputStream ( (imp 'java.io.FileInputStream '))
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
operators {
|
|
13
|
-
|
|
14
|
-
; JavaScript localstorage functions using localforage
|
|
15
|
-
localStorage _@(async):void (path:string value:string) {
|
|
16
|
-
templates {
|
|
17
|
-
es6 (`await (new Promise(resolve => { localforage.setItem(` (e 1) `, ` (e 2) `, resolve ) } ) )` )
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
localStorage _@(optional async):string (path:string) {
|
|
22
|
-
templates {
|
|
23
|
-
es6 (`await (new Promise(resolve => { localforage.getItem(` (e 1) `, (err,value) => {
|
|
24
|
-
if(err) resolve(null);
|
|
25
|
-
resolve(value)
|
|
26
|
-
}) } ))` )
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
; Android + UIContext functions
|
|
31
|
-
file_exists _:boolean (ui:UIContext filename:string) {
|
|
32
|
-
templates {
|
|
33
|
-
java7 ( '__storageFileExist(' (e 1) '.getCtx(), ' (e 2) ')' (imp 'java.io.File')
|
|
34
|
-
(create_polyfill `
|
|
35
|
-
static boolean __storageFileExist(Context ctx, String fname){
|
|
36
|
-
File file = ctx.getFileStreamPath(fname);
|
|
37
|
-
return file.exists();
|
|
38
|
-
}
|
|
39
|
-
`)
|
|
40
|
-
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
open_private_output _:StorageOutputStream (ui:UIContext filename:string) {
|
|
46
|
-
templates {
|
|
47
|
-
java7 ( (e 1) '.getCtx().openFileOutput(' (e 2) ', Context.MODE_PRIVATE)')
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
open_private_input _:StorageInputStream (ui:UIContext filename:string) {
|
|
51
|
-
templates {
|
|
52
|
-
java7 ( (e 1) '.getCtx().openFileInput(' (e 2) ')')
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
read _:Bytes (stream:StorageInputStream) {
|
|
56
|
-
templates {
|
|
57
|
-
java7 ( '__readStream(' (e 1) ')' (imp 'java.io.BufferedInputStream') (imp 'java.io.FileNotFoundException')
|
|
58
|
-
|
|
59
|
-
(create_polyfill `
|
|
60
|
-
static byte[] __readStream(FileInputStream fis) {
|
|
61
|
-
byte[] bytes = null;
|
|
62
|
-
try {
|
|
63
|
-
bytes = new byte[fis.available()];
|
|
64
|
-
BufferedInputStream buf = new BufferedInputStream(fis);
|
|
65
|
-
buf.read(bytes, 0, bytes.length);
|
|
66
|
-
buf.close();
|
|
67
|
-
} catch (FileNotFoundException e) {
|
|
68
|
-
e.printStackTrace();
|
|
69
|
-
} catch (IOException e) {
|
|
70
|
-
e.printStackTrace();
|
|
71
|
-
}
|
|
72
|
-
return bytes;
|
|
73
|
-
}
|
|
74
|
-
`)
|
|
75
|
-
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
write _:void (stream:StorageOutputStream data:Bytes) {
|
|
80
|
-
templates {
|
|
81
|
-
java7 ( (e 1) '.write(' (e 2) ');')
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
close _:void (stream:StorageOutputStream) {
|
|
85
|
-
templates {
|
|
86
|
-
java7 ( (e 1) '.close();')
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
package/dist/lib/lib/Time.rgr
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
; Date functions
|
|
3
|
-
; https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js
|
|
4
|
-
|
|
5
|
-
systemclass SystemDate {
|
|
6
|
-
es6 Date
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
operator type:void es6 {
|
|
10
|
-
|
|
11
|
-
fn to_date:SystemDate ( value:int ) ('new Date(' (e 1) ')')
|
|
12
|
-
fn to_date:SystemDate ( y:int m:int d:int) ('new Date(' (e 1) ', ' (e 2) ' - 1, ' (e 3) ')')
|
|
13
|
-
fn to_string:string (d:SystemDate) ( (e 1) '.toString()')
|
|
14
|
-
fn to_utc:int (d:SystemDate) ( (e 1) '.getTime()')
|
|
15
|
-
fn yyyy:int (d:SystemDate) ( (e 1) '.getFullYear()')
|
|
16
|
-
fn mm:int (d:SystemDate) ( '(' (e 1) '.getMonth() + 1)')
|
|
17
|
-
fn dd:int (d:SystemDate) ( (e 1) '.getDate()')
|
|
18
|
-
|
|
19
|
-
fn weekday:int (d:SystemDate) ( (e 1) '.getDay()')
|
|
20
|
-
|
|
21
|
-
fn month:int (d:int) ('(new Date(' (e 1) ')).getMonth() + 1')
|
|
22
|
-
|
|
23
|
-
fn day_step:int () ( '1000*60*60*24' )
|
|
24
|
-
fn week_step:int () ( '1000*60*60*24*7' )
|
|
25
|
-
|
|
26
|
-
fn monday:SystemDate (d:SystemDate) {
|
|
27
|
-
def day (weekday d)
|
|
28
|
-
if( day == 0 ) {
|
|
29
|
-
return (add_days d -6 )
|
|
30
|
-
}
|
|
31
|
-
return (add_days d ( -1 * (day - 1)) )
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
fn tuesday:SystemDate (d:SystemDate) {
|
|
35
|
-
return ( add_days (monday d) 1)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
; calculate the year and week from the date
|
|
39
|
-
fn year_week:[int] (d:SystemDate) ('((d)=>{
|
|
40
|
-
var d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()))
|
|
41
|
-
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
|
|
42
|
-
var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
|
|
43
|
-
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
|
|
44
|
-
return [d.getUTCFullYear(), weekNo];
|
|
45
|
-
})('(e 1)') ')
|
|
46
|
-
|
|
47
|
-
fn ms:int (d:SystemDate) ( (e 1) '.getTime()')
|
|
48
|
-
|
|
49
|
-
fn clone:SystemDate (d:SystemDate) ( '(new Date(' (e 1) '.getTime())' )
|
|
50
|
-
fn add_days:SystemDate ( d:SystemDate value:int ) ( '(()=>{ var _=(new Date(' (e 1) '.getTime())); _.setDate(' (e 1) '.getDate() + ' (e 2) ');return _;})()')
|
|
51
|
-
|
|
52
|
-
fn to_ymd:string ( dd:SystemDate ) {
|
|
53
|
-
return ( (yyyy dd) + "-" + (mm dd) + "-" + (dd dd))
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
operator type:void all {
|
|
58
|
-
fn ymd_to_date@(throws):SystemDate (ymd:string) {
|
|
59
|
-
def parts (strsplit ymd '-')
|
|
60
|
-
if( (size parts) < 3) {
|
|
61
|
-
throw "Invalid date"
|
|
62
|
-
}
|
|
63
|
-
def yy 0
|
|
64
|
-
def mm 0
|
|
65
|
-
def dd 0
|
|
66
|
-
try {
|
|
67
|
-
yy = (unwrap ( to_int (at parts 0)))
|
|
68
|
-
mm = (unwrap ( to_int (at parts 1)))
|
|
69
|
-
dd = (unwrap ( to_int (at parts 2)))
|
|
70
|
-
} {
|
|
71
|
-
throw "Invalid date format"
|
|
72
|
-
}
|
|
73
|
-
return (to_date yy mm dd)
|
|
74
|
-
}
|
|
75
|
-
}
|
package/dist/lib/lib/Timers.rgr
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
; operators to get time from JavaScript
|
|
2
|
-
systemclass TimeIntervalID {
|
|
3
|
-
es6 TimeInterval
|
|
4
|
-
}
|
|
5
|
-
systemclass TimeOutID {
|
|
6
|
-
es6 number
|
|
7
|
-
java7 Thread
|
|
8
|
-
swift3 setTimeoutClass
|
|
9
|
-
go '*r_go_timer'
|
|
10
|
-
}
|
|
11
|
-
operators {
|
|
12
|
-
clearInterval cmdClearInterval:void ( i:TimeIntervalID) {
|
|
13
|
-
templates {
|
|
14
|
-
es6 ("clearInterval( " (e 1) ")")
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
setInterval cmdInterval:TimeIntervalID (code:block ms:int) {
|
|
18
|
-
templates {
|
|
19
|
-
es6 ("setInterval( () => {" (block 1 ) "} , " (e 2) ")")
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
clearTimeout cmdClearInterval:void ( i:TimeOutID) {
|
|
23
|
-
templates {
|
|
24
|
-
es6 ("clearTimeout(" (e 1) ")")
|
|
25
|
-
java7 ( (e 1) ".interrupt();" nl)
|
|
26
|
-
swift3 ( (e 1) '.stop()' nl)
|
|
27
|
-
cpp ()
|
|
28
|
-
go ( (e 1) ".is_valid = false;" nl)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
setTimeout cmdInterval:TimeOutID (ms:int code:block) {
|
|
33
|
-
templates {
|
|
34
|
-
go (
|
|
35
|
-
"r_setTimeout( " (e 1) ", func() {" nl I (block 2) i nl " } )"
|
|
36
|
-
(imp "time")
|
|
37
|
-
|
|
38
|
-
(create_polyfill '
|
|
39
|
-
type r_go_timer struct {
|
|
40
|
-
is_valid bool
|
|
41
|
-
}
|
|
42
|
-
func r_setTimeout( ms int64, cb func() () ) *r_go_timer {
|
|
43
|
-
o := new(r_go_timer)
|
|
44
|
-
o.is_valid = true
|
|
45
|
-
time.AfterFunc( time.Duration(ms)*time.Millisecond, func() () {
|
|
46
|
-
if o.is_valid {
|
|
47
|
-
cb()
|
|
48
|
-
}
|
|
49
|
-
})
|
|
50
|
-
return o
|
|
51
|
-
}
|
|
52
|
-
') )
|
|
53
|
-
cpp ( 'setTimeout(' (e 1) ', [&](){' nl I (block 2) i nl '});'
|
|
54
|
-
(imp '<future>')
|
|
55
|
-
(imp '<chrono>')
|
|
56
|
-
(imp '<thread>')
|
|
57
|
-
(create_polyfill `
|
|
58
|
-
|
|
59
|
-
void setTimeout(int milliseconds,std::function<void()> func)
|
|
60
|
-
{
|
|
61
|
-
std::async(std::launch::async,[=]()
|
|
62
|
-
{
|
|
63
|
-
std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
|
|
64
|
-
func();
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
`)
|
|
68
|
-
|
|
69
|
-
)
|
|
70
|
-
|
|
71
|
-
test1_swift3 ( 'setTimeoutClass(ms: ' (e 1) ', callback: { () -> Void in ' nl I (block 2) i nl '})'
|
|
72
|
-
(imp "Foundation")
|
|
73
|
-
(create_polyfill '
|
|
74
|
-
class setTimeoutClass {
|
|
75
|
-
var cb : (() -> Void)?
|
|
76
|
-
init( ms:Int, callback : @escaping (() -> Void) ) {
|
|
77
|
-
self.cb = callback
|
|
78
|
-
self.cb!()
|
|
79
|
-
}
|
|
80
|
-
func call() {
|
|
81
|
-
self.cb!()
|
|
82
|
-
}
|
|
83
|
-
func stop() {
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
' )
|
|
87
|
-
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
swift3 ( 'setTimeoutClass(ms: ' (e 1) ', callback: { () -> Void in ' nl I (block 2) i nl '})'
|
|
92
|
-
(imp "Foundation")
|
|
93
|
-
(create_polyfill '
|
|
94
|
-
class setTimeoutClass {
|
|
95
|
-
var timer = Timer()
|
|
96
|
-
var cb : (() -> Void)?
|
|
97
|
-
init( ms:Int, callback : @escaping (() -> Void) ) {
|
|
98
|
-
self.timer = Timer.scheduledTimer(timeInterval:(Double(ms)*0.001), target: self, selector: #selector(self.callMe), userInfo: nil, repeats: false)
|
|
99
|
-
self.cb = callback
|
|
100
|
-
}
|
|
101
|
-
@objc func callMe(t: Timer) {
|
|
102
|
-
self.cb!()
|
|
103
|
-
}
|
|
104
|
-
func stop() {
|
|
105
|
-
self.timer.invalidate();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
' )
|
|
109
|
-
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
es6 ("setTimeout( () => {" (block 2 ) "} , " (e 1) ")") ;"
|
|
113
|
-
rust (
|
|
114
|
-
"std::thread::spawn(move || {" nl I
|
|
115
|
-
"std::thread::sleep(std::time::Duration::from_millis(" (e 1) " as u64));" nl
|
|
116
|
-
(block 2)
|
|
117
|
-
i nl "});" nl
|
|
118
|
-
)
|
|
119
|
-
java7 (
|
|
120
|
-
"__startThread("
|
|
121
|
-
"new Thread() {" nl I
|
|
122
|
-
"@Override" nl
|
|
123
|
-
"public void run() {" nl I
|
|
124
|
-
"try {" nl I
|
|
125
|
-
"Thread.sleep( (long) ( " (e 1) "));" nl
|
|
126
|
-
(block 2)
|
|
127
|
-
nl i
|
|
128
|
-
"} catch (Exception e) {" nl I
|
|
129
|
-
"System.err.println(e);" nl i
|
|
130
|
-
"}" nl i
|
|
131
|
-
"}" nl i
|
|
132
|
-
"}" nl
|
|
133
|
-
");"
|
|
134
|
-
(create_polyfill
|
|
135
|
-
"static Thread __startThread( Thread t) {
|
|
136
|
-
t.start();
|
|
137
|
-
return t;
|
|
138
|
-
}"
|
|
139
|
-
)
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
java7uisave (
|
|
143
|
-
"new Thread() {" nl I
|
|
144
|
-
"@Override" nl
|
|
145
|
-
"public void run() {" nl I
|
|
146
|
-
"try {" nl I
|
|
147
|
-
"Thread.sleep( (long) (1000 *" (e 1) "));" nl
|
|
148
|
-
"getActivity().runOnUiThread(new Runnable(){" nl
|
|
149
|
-
"@Override" nl
|
|
150
|
-
"public void run() {" nl I
|
|
151
|
-
(block 2)
|
|
152
|
-
nl i "}"
|
|
153
|
-
nl i
|
|
154
|
-
"});"
|
|
155
|
-
nl i
|
|
156
|
-
"} catch (Exception e) {" nl I
|
|
157
|
-
"System.err.println(e);" nl i
|
|
158
|
-
"}" nl i
|
|
159
|
-
"}" nl i
|
|
160
|
-
"}.start();" nl
|
|
161
|
-
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
setTimeout cmdInterval:TimeOutID (code:block ms:int) {
|
|
167
|
-
templates {
|
|
168
|
-
es6 ("setTimeout( () => {" (block 1 ) "} , " (e 2) ")")
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
time_as_string cmdTime:string () {
|
|
172
|
-
templates {
|
|
173
|
-
es6 ("(new Date()).toString()")
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
systemclass RUint32Array {
|
|
2
|
-
es6 Uint32Array
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
systemclass Uint32 {
|
|
6
|
-
es6 Uint32
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
operator type:void es6 {
|
|
10
|
-
fn create_Uint32Array:RUint32Array (size:int) ('new Uint32Array(' (e 1) ')')
|
|
11
|
-
fn at:Uint32 (buff:RUint32Array index:int) ( (e 1) '[' (e 2) ']')
|
|
12
|
-
fn to_int:int (value:Uint32) ( (e 1) )
|
|
13
|
-
fn to_hex_string:string (value:Uint32) ( (e 1) '.toString(16)' )
|
|
14
|
-
}
|