rapydscript-ns 0.9.3 → 0.9.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.
- package/.agignore +1 -1
- package/.github/workflows/ci.yml +38 -38
- package/=template.pyj +5 -5
- package/CHANGELOG.md +18 -0
- package/HACKING.md +103 -103
- package/LICENSE +24 -24
- package/PYTHON_GAPS.md +52 -142
- package/README.md +51 -21
- package/TODO.md +1 -26
- package/add-toc-to-readme +2 -2
- package/bin/export +75 -75
- package/bin/rapydscript +0 -0
- package/bin/web-repl-export +102 -102
- package/build +2 -2
- package/language-service/index.js +88 -36
- package/package.json +1 -1
- package/publish.py +37 -37
- package/release/baselib-plain-pretty.js +157 -31
- package/release/baselib-plain-ugly.js +5 -5
- package/release/compiler.js +724 -426
- package/release/signatures.json +29 -29
- package/session.vim +4 -4
- package/setup.cfg +2 -2
- package/src/ast.pyj +7 -0
- package/src/baselib-containers.pyj +41 -4
- package/src/baselib-errors.pyj +4 -3
- package/src/baselib-internal.pyj +47 -18
- package/src/baselib-str.pyj +16 -3
- package/src/compiler.pyj +36 -36
- package/src/errors.pyj +30 -30
- package/src/lib/aes.pyj +646 -646
- package/src/lib/collections.pyj +227 -3
- package/src/lib/copy.pyj +120 -120
- package/src/lib/elementmaker.pyj +83 -83
- package/src/lib/encodings.pyj +126 -126
- package/src/lib/gettext.pyj +569 -569
- package/src/lib/itertools.pyj +580 -580
- package/src/lib/math.pyj +193 -193
- package/src/lib/operator.pyj +11 -11
- package/src/lib/pprint.pyj +455 -0
- package/src/lib/random.pyj +118 -118
- package/src/lib/react.pyj +74 -74
- package/src/lib/statistics.pyj +0 -0
- package/src/lib/traceback.pyj +63 -63
- package/src/lib/uuid.pyj +77 -77
- package/src/monaco-language-service/completions.js +21 -14
- package/src/monaco-language-service/diagnostics.js +2 -2
- package/src/monaco-language-service/dts.js +58 -15
- package/src/monaco-language-service/package.json +3 -0
- package/src/output/classes.pyj +25 -2
- package/src/output/codegen.pyj +4 -1
- package/src/output/comments.pyj +45 -45
- package/src/output/exceptions.pyj +201 -201
- package/src/output/jsx.pyj +164 -164
- package/src/output/treeshake.pyj +182 -182
- package/src/output/utils.pyj +72 -72
- package/src/parse.pyj +42 -7
- package/src/string_interpolation.pyj +72 -72
- package/src/tokenizer.pyj +18 -2
- package/src/unicode_aliases.pyj +576 -576
- package/src/utils.pyj +192 -192
- package/test/_import_one.pyj +37 -37
- package/test/_import_two/__init__.pyj +11 -11
- package/test/_import_two/level2/deep.pyj +4 -4
- package/test/_import_two/other.pyj +6 -6
- package/test/_import_two/sub.pyj +13 -13
- package/test/aes_vectors.pyj +421 -421
- package/test/annotations.pyj +80 -80
- package/test/baselib.pyj +23 -0
- package/test/chainmap.pyj +185 -0
- package/test/dataclasses.pyj +3 -4
- package/test/decorators.pyj +77 -77
- package/test/docstrings.pyj +39 -39
- package/test/elementmaker_test.pyj +45 -45
- package/test/enum.pyj +1 -1
- package/test/functions.pyj +151 -151
- package/test/generators.pyj +41 -41
- package/test/generic.pyj +370 -370
- package/test/internationalization.pyj +73 -73
- package/test/lint.pyj +164 -164
- package/test/loops.pyj +85 -85
- package/test/numpy.pyj +734 -734
- package/test/pprint.pyj +232 -0
- package/test/python_features.pyj +1 -1
- package/test/repl.pyj +121 -121
- package/test/scoped_flags.pyj +76 -76
- package/test/statistics.pyj +224 -0
- package/test/str.pyj +4 -4
- package/test/unit/index.js +455 -0
- package/test/unit/language-service-completions.js +2 -0
- package/test/unit/language-service-dts.js +113 -0
- package/test/unit/language-service-hover.js +455 -455
- package/test/unit/language-service.js +135 -2
- package/test/unit/web-repl.js +349 -1
- package/tools/compiler.d.ts +367 -367
- package/tools/completer.js +131 -131
- package/tools/export.js +4 -2
- package/tools/gettext.js +185 -185
- package/tools/ini.js +65 -65
- package/tools/msgfmt.js +187 -187
- package/tools/repl.js +223 -223
- package/tools/test.js +118 -118
- package/tools/utils.js +141 -128
- package/tools/web_repl.js +95 -95
- package/try +41 -41
- package/web-repl/env.js +196 -196
- package/web-repl/index.html +163 -163
- package/web-repl/prism.css +139 -139
- package/web-repl/prism.js +113 -113
- package/web-repl/rapydscript.js +228 -226
- package/web-repl/sha1.js +25 -25
package/bin/export
CHANGED
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// vim:ft=javascript:ts=4:et
|
|
3
|
-
|
|
4
|
-
"use strict";
|
|
5
|
-
|
|
6
|
-
var fs = require('fs');
|
|
7
|
-
var path = require('path');
|
|
8
|
-
var crypto = require('crypto');
|
|
9
|
-
|
|
10
|
-
var base = path.join(path.dirname(__dirname));
|
|
11
|
-
var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
|
|
12
|
-
var compiler_dir = path.join(base, 'dev');
|
|
13
|
-
if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
|
|
14
|
-
|
|
15
|
-
var manifest = {}, total = 0;
|
|
16
|
-
['compiler.js', 'baselib-plain-pretty.js', 'baselib-plain-ugly.js'].forEach(function(x) {
|
|
17
|
-
manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
|
|
18
|
-
total += manifest[x].length;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
['web_repl.js', 'repl.js', 'completer.js', 'utils.js', 'gettext.js', 'msgfmt.js'].forEach(function(x) {
|
|
22
|
-
x = 'tools/' + x;
|
|
23
|
-
manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
|
|
24
|
-
total += manifest[x].length;
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var dedup = {};
|
|
29
|
-
|
|
30
|
-
function path_exists(path) {
|
|
31
|
-
try {
|
|
32
|
-
fs.statSync(path);
|
|
33
|
-
return true;
|
|
34
|
-
} catch(e) {
|
|
35
|
-
if (e.code != 'ENOENT') throw e;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function sha1sum(data) {
|
|
40
|
-
var h = crypto.createHash('sha1');
|
|
41
|
-
h.update(data);
|
|
42
|
-
return h.digest('hex');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function process_dir(name) {
|
|
46
|
-
var dpath = path.join(base, name);
|
|
47
|
-
var items = fs.readdirSync(dpath);
|
|
48
|
-
items.forEach(function (x) {
|
|
49
|
-
var iname = name + '/' + x;
|
|
50
|
-
var ipath = path.join(dpath, x);
|
|
51
|
-
var s = fs.statSync(ipath);
|
|
52
|
-
if (s.isDirectory()) return process_dir(iname);
|
|
53
|
-
var raw = fs.readFileSync(ipath, {'encoding':'utf-8'});
|
|
54
|
-
var sig = sha1sum(raw);
|
|
55
|
-
if (dedup.hasOwnProperty(sig)) {
|
|
56
|
-
manifest[iname] = [dedup[sig]];
|
|
57
|
-
} else {
|
|
58
|
-
manifest[iname] = raw;
|
|
59
|
-
dedup[sig] = iname;
|
|
60
|
-
total += s.size;
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
Object.keys(meta.dependencies).forEach(function (x) {
|
|
66
|
-
process_dir('node_modules/' + x);
|
|
67
|
-
});
|
|
68
|
-
console.log('// vim:fileencoding=utf-8');
|
|
69
|
-
console.log('(function() {');
|
|
70
|
-
console.log('var rs_version = ' + JSON.stringify(meta.version) + ';');
|
|
71
|
-
console.log('var data = ' + JSON.stringify(manifest) + ';');
|
|
72
|
-
console.log();
|
|
73
|
-
console.log(fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'}));
|
|
74
|
-
console.log('})()');
|
|
75
|
-
console.error('RapydScript compiler (uncompressed) size: ' + (total/(1024 * 1024)).toFixed(1) + ' MB');
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// vim:ft=javascript:ts=4:et
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var crypto = require('crypto');
|
|
9
|
+
|
|
10
|
+
var base = path.join(path.dirname(__dirname));
|
|
11
|
+
var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
|
|
12
|
+
var compiler_dir = path.join(base, 'dev');
|
|
13
|
+
if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
|
|
14
|
+
|
|
15
|
+
var manifest = {}, total = 0;
|
|
16
|
+
['compiler.js', 'baselib-plain-pretty.js', 'baselib-plain-ugly.js'].forEach(function(x) {
|
|
17
|
+
manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
|
|
18
|
+
total += manifest[x].length;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
['web_repl.js', 'repl.js', 'completer.js', 'utils.js', 'gettext.js', 'msgfmt.js'].forEach(function(x) {
|
|
22
|
+
x = 'tools/' + x;
|
|
23
|
+
manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
|
|
24
|
+
total += manifest[x].length;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
var dedup = {};
|
|
29
|
+
|
|
30
|
+
function path_exists(path) {
|
|
31
|
+
try {
|
|
32
|
+
fs.statSync(path);
|
|
33
|
+
return true;
|
|
34
|
+
} catch(e) {
|
|
35
|
+
if (e.code != 'ENOENT') throw e;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function sha1sum(data) {
|
|
40
|
+
var h = crypto.createHash('sha1');
|
|
41
|
+
h.update(data);
|
|
42
|
+
return h.digest('hex');
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function process_dir(name) {
|
|
46
|
+
var dpath = path.join(base, name);
|
|
47
|
+
var items = fs.readdirSync(dpath);
|
|
48
|
+
items.forEach(function (x) {
|
|
49
|
+
var iname = name + '/' + x;
|
|
50
|
+
var ipath = path.join(dpath, x);
|
|
51
|
+
var s = fs.statSync(ipath);
|
|
52
|
+
if (s.isDirectory()) return process_dir(iname);
|
|
53
|
+
var raw = fs.readFileSync(ipath, {'encoding':'utf-8'});
|
|
54
|
+
var sig = sha1sum(raw);
|
|
55
|
+
if (dedup.hasOwnProperty(sig)) {
|
|
56
|
+
manifest[iname] = [dedup[sig]];
|
|
57
|
+
} else {
|
|
58
|
+
manifest[iname] = raw;
|
|
59
|
+
dedup[sig] = iname;
|
|
60
|
+
total += s.size;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
Object.keys(meta.dependencies).forEach(function (x) {
|
|
66
|
+
process_dir('node_modules/' + x);
|
|
67
|
+
});
|
|
68
|
+
console.log('// vim:fileencoding=utf-8');
|
|
69
|
+
console.log('(function() {');
|
|
70
|
+
console.log('var rs_version = ' + JSON.stringify(meta.version) + ';');
|
|
71
|
+
console.log('var data = ' + JSON.stringify(manifest) + ';');
|
|
72
|
+
console.log();
|
|
73
|
+
console.log(fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'}));
|
|
74
|
+
console.log('})()');
|
|
75
|
+
console.error('RapydScript compiler (uncompressed) size: ' + (total/(1024 * 1024)).toFixed(1) + ' MB');
|
package/bin/rapydscript
CHANGED
|
File without changes
|
package/bin/web-repl-export
CHANGED
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// vim:ft=javascript:ts=4:et
|
|
3
|
-
|
|
4
|
-
"use strict";
|
|
5
|
-
|
|
6
|
-
var fs = require('fs');
|
|
7
|
-
var path = require('path');
|
|
8
|
-
|
|
9
|
-
var base = path.normalize(path.resolve(path.join(path.dirname(__dirname))));
|
|
10
|
-
var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
|
|
11
|
-
var commit_sha = fs.readFileSync(path.join(base, '.git', 'refs', 'heads', 'master'), {'encoding':'utf-8'}).trim();
|
|
12
|
-
var compiler_dir = path.join(base, 'dev');
|
|
13
|
-
if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
|
|
14
|
-
|
|
15
|
-
var manifest = {}, total = 0;
|
|
16
|
-
['compiler.js', 'baselib-plain-pretty.js'].forEach(function(x) {
|
|
17
|
-
manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
|
|
18
|
-
total += manifest[x].length;
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
['web_repl.js', 'embedded_compiler.js', 'utils.js', 'completer.js', 'msgfmt.js', 'gettext.js'].forEach(function(x) {
|
|
22
|
-
x = 'tools/' + x;
|
|
23
|
-
manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
|
|
24
|
-
total += manifest[x].length;
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
var stdlib = path.join(base, 'src', 'lib');
|
|
28
|
-
|
|
29
|
-
function path_exists(path) {
|
|
30
|
-
try {
|
|
31
|
-
fs.statSync(path);
|
|
32
|
-
return true;
|
|
33
|
-
} catch(e) {
|
|
34
|
-
if (e.code != 'ENOENT') throw e;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function process_dir(relpath) {
|
|
39
|
-
var fullpath = (relpath) ? path.join(stdlib, relpath) : stdlib;
|
|
40
|
-
fs.readdirSync(fullpath).forEach(function (x) {
|
|
41
|
-
var q = path.join(fullpath, x);
|
|
42
|
-
var s = fs.statSync(q);
|
|
43
|
-
if (s.isDirectory()) return process_dir(relpath + '/' + x);
|
|
44
|
-
if (!x.endsWith('.pyj')) return;
|
|
45
|
-
var iname = ('__stdlib__' + '/' + relpath + '/' + x).replace(/\\/g, '/').replace(/\/+/g, '/');
|
|
46
|
-
var raw = fs.readFileSync(q, {'encoding':'utf-8'});
|
|
47
|
-
manifest[iname] = raw;
|
|
48
|
-
total += s.size;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
process_dir('');
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var rs = '// vim:fileencoding=utf-8\n';
|
|
55
|
-
rs += '(function(external_namespace) {\n';
|
|
56
|
-
rs += '"use strict;"\n';
|
|
57
|
-
rs += 'var rs_version = ' + JSON.stringify(meta.version) + ';\n';
|
|
58
|
-
rs += 'var rs_commit_sha = ' + JSON.stringify(commit_sha) + ';\n';
|
|
59
|
-
rs += '\n// Embedded modules {{{\n';
|
|
60
|
-
rs += 'var data = ' + JSON.stringify(manifest) + ';\n\n';
|
|
61
|
-
rs += '// End embedded modules }}}\n\n';
|
|
62
|
-
rs += fs.readFileSync(path.join(base, 'web-repl', 'env.js'));
|
|
63
|
-
rs += '\n// Embedded sha1 implementation {{{\n';
|
|
64
|
-
rs += '(function() {\n';
|
|
65
|
-
rs += fs.readFileSync(path.join(base, 'web-repl', 'sha1.js'));
|
|
66
|
-
rs += '}).call(jsSHA);\n';
|
|
67
|
-
rs += '// End embedded sha1 implementation }}}\n\n';
|
|
68
|
-
rs += 'var exports = namespace;\n';
|
|
69
|
-
rs += fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'});
|
|
70
|
-
rs += 'external_namespace.RapydScript = namespace;\n';
|
|
71
|
-
rs += '})(this);\n';
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var base_dir = process.argv.slice(-1)[0];
|
|
75
|
-
if (process.argv.length !== 3) {
|
|
76
|
-
console.error('Usage: web-repl-export /path/to/export/directory');
|
|
77
|
-
process.exit(1);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
base_dir = path.normalize(path.resolve(base_dir));
|
|
81
|
-
|
|
82
|
-
try {
|
|
83
|
-
fs.mkdirSync(base_dir);
|
|
84
|
-
} catch(e) {
|
|
85
|
-
if (e.code !== 'EEXIST') throw e;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
process.chdir(base_dir);
|
|
90
|
-
} catch(e) {
|
|
91
|
-
if (e.code === 'ENOTDIR') { console.error(base_dir + ' is not a directory'); process.exit(1); }
|
|
92
|
-
throw e;
|
|
93
|
-
}
|
|
94
|
-
fs.writeFileSync('rapydscript.js', rs, {'encoding':'utf-8'});
|
|
95
|
-
var web_repl = path.join(base, 'web-repl');
|
|
96
|
-
fs.readdirSync(web_repl).forEach(function(x) {
|
|
97
|
-
if (['sha1.js', 'env.js'].indexOf(x) !== -1) return;
|
|
98
|
-
var data = fs.readFileSync(path.join(web_repl, x), {'encoding':'utf-8'});
|
|
99
|
-
fs.writeFileSync(x, data, {'encoding':'utf-8'});
|
|
100
|
-
});
|
|
101
|
-
console.log('RapydScript compiler (uncompressed) size: ' + (total/(1024)).toFixed(1) + ' KB');
|
|
102
|
-
console.log('web-repl exported to: ' + base_dir);
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// vim:ft=javascript:ts=4:et
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
|
|
9
|
+
var base = path.normalize(path.resolve(path.join(path.dirname(__dirname))));
|
|
10
|
+
var meta = JSON.parse(fs.readFileSync(path.join(base, 'package.json'), {'encoding':'utf-8'}));
|
|
11
|
+
var commit_sha = fs.readFileSync(path.join(base, '.git', 'refs', 'heads', 'master'), {'encoding':'utf-8'}).trim();
|
|
12
|
+
var compiler_dir = path.join(base, 'dev');
|
|
13
|
+
if (!path_exists(path.join(compiler_dir, 'compiler.js'))) compiler_dir = path.join(base, 'release');
|
|
14
|
+
|
|
15
|
+
var manifest = {}, total = 0;
|
|
16
|
+
['compiler.js', 'baselib-plain-pretty.js'].forEach(function(x) {
|
|
17
|
+
manifest[x] = fs.readFileSync(path.join(compiler_dir, x), {'encoding':'utf-8'});
|
|
18
|
+
total += manifest[x].length;
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
['web_repl.js', 'embedded_compiler.js', 'utils.js', 'completer.js', 'msgfmt.js', 'gettext.js'].forEach(function(x) {
|
|
22
|
+
x = 'tools/' + x;
|
|
23
|
+
manifest[x] = fs.readFileSync(path.join(base, x), {'encoding':'utf-8'});
|
|
24
|
+
total += manifest[x].length;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
var stdlib = path.join(base, 'src', 'lib');
|
|
28
|
+
|
|
29
|
+
function path_exists(path) {
|
|
30
|
+
try {
|
|
31
|
+
fs.statSync(path);
|
|
32
|
+
return true;
|
|
33
|
+
} catch(e) {
|
|
34
|
+
if (e.code != 'ENOENT') throw e;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function process_dir(relpath) {
|
|
39
|
+
var fullpath = (relpath) ? path.join(stdlib, relpath) : stdlib;
|
|
40
|
+
fs.readdirSync(fullpath).forEach(function (x) {
|
|
41
|
+
var q = path.join(fullpath, x);
|
|
42
|
+
var s = fs.statSync(q);
|
|
43
|
+
if (s.isDirectory()) return process_dir(relpath + '/' + x);
|
|
44
|
+
if (!x.endsWith('.pyj')) return;
|
|
45
|
+
var iname = ('__stdlib__' + '/' + relpath + '/' + x).replace(/\\/g, '/').replace(/\/+/g, '/');
|
|
46
|
+
var raw = fs.readFileSync(q, {'encoding':'utf-8'});
|
|
47
|
+
manifest[iname] = raw;
|
|
48
|
+
total += s.size;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
process_dir('');
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
var rs = '// vim:fileencoding=utf-8\n';
|
|
55
|
+
rs += '(function(external_namespace) {\n';
|
|
56
|
+
rs += '"use strict;"\n';
|
|
57
|
+
rs += 'var rs_version = ' + JSON.stringify(meta.version) + ';\n';
|
|
58
|
+
rs += 'var rs_commit_sha = ' + JSON.stringify(commit_sha) + ';\n';
|
|
59
|
+
rs += '\n// Embedded modules {{{\n';
|
|
60
|
+
rs += 'var data = ' + JSON.stringify(manifest) + ';\n\n';
|
|
61
|
+
rs += '// End embedded modules }}}\n\n';
|
|
62
|
+
rs += fs.readFileSync(path.join(base, 'web-repl', 'env.js'));
|
|
63
|
+
rs += '\n// Embedded sha1 implementation {{{\n';
|
|
64
|
+
rs += '(function() {\n';
|
|
65
|
+
rs += fs.readFileSync(path.join(base, 'web-repl', 'sha1.js'));
|
|
66
|
+
rs += '}).call(jsSHA);\n';
|
|
67
|
+
rs += '// End embedded sha1 implementation }}}\n\n';
|
|
68
|
+
rs += 'var exports = namespace;\n';
|
|
69
|
+
rs += fs.readFileSync(path.join(base, 'tools', 'export.js'), {'encoding':'utf-8'});
|
|
70
|
+
rs += 'external_namespace.RapydScript = namespace;\n';
|
|
71
|
+
rs += '})(this);\n';
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
var base_dir = process.argv.slice(-1)[0];
|
|
75
|
+
if (process.argv.length !== 3) {
|
|
76
|
+
console.error('Usage: web-repl-export /path/to/export/directory');
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
base_dir = path.normalize(path.resolve(base_dir));
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
fs.mkdirSync(base_dir);
|
|
84
|
+
} catch(e) {
|
|
85
|
+
if (e.code !== 'EEXIST') throw e;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
try {
|
|
89
|
+
process.chdir(base_dir);
|
|
90
|
+
} catch(e) {
|
|
91
|
+
if (e.code === 'ENOTDIR') { console.error(base_dir + ' is not a directory'); process.exit(1); }
|
|
92
|
+
throw e;
|
|
93
|
+
}
|
|
94
|
+
fs.writeFileSync('rapydscript.js', rs, {'encoding':'utf-8'});
|
|
95
|
+
var web_repl = path.join(base, 'web-repl');
|
|
96
|
+
fs.readdirSync(web_repl).forEach(function(x) {
|
|
97
|
+
if (['sha1.js', 'env.js'].indexOf(x) !== -1) return;
|
|
98
|
+
var data = fs.readFileSync(path.join(web_repl, x), {'encoding':'utf-8'});
|
|
99
|
+
fs.writeFileSync(x, data, {'encoding':'utf-8'});
|
|
100
|
+
});
|
|
101
|
+
console.log('RapydScript compiler (uncompressed) size: ' + (total/(1024)).toFixed(1) + ' KB');
|
|
102
|
+
console.log('web-repl exported to: ' + base_dir);
|
package/build
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
exec bin/rapydscript self --complete --test
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
exec bin/rapydscript self --complete --test
|
|
3
3
|
exec bin/web-repl-export web-repl
|