rapydscript-ns 0.8.2 → 0.8.4
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 +39 -0
- package/HACKING.md +103 -103
- package/LICENSE +24 -24
- package/PYTHON_DIFFERENCES_REPORT.md +291 -0
- package/PYTHON_FEATURE_COVERAGE.md +106 -15
- package/README.md +831 -52
- package/TODO.md +4 -286
- package/add-toc-to-readme +2 -2
- package/bin/export +75 -75
- package/bin/rapydscript +70 -70
- package/bin/web-repl-export +102 -102
- package/build +2 -2
- package/language-service/index.js +4623 -0
- package/language-service/language-service.d.ts +40 -0
- package/package.json +9 -7
- package/publish.py +37 -37
- package/release/baselib-plain-pretty.js +2006 -229
- package/release/baselib-plain-ugly.js +70 -3
- package/release/compiler.js +11554 -3870
- package/release/signatures.json +31 -29
- package/session.vim +4 -4
- package/setup.cfg +2 -2
- package/src/ast.pyj +93 -1
- package/src/baselib-builtins.pyj +99 -2
- package/src/baselib-containers.pyj +107 -4
- package/src/baselib-errors.pyj +44 -0
- package/src/baselib-internal.pyj +124 -5
- package/src/baselib-itertools.pyj +97 -97
- package/src/baselib-str.pyj +32 -1
- package/src/compiler.pyj +36 -36
- package/src/errors.pyj +30 -30
- package/src/lib/aes.pyj +646 -646
- package/src/lib/collections.pyj +1 -1
- package/src/lib/copy.pyj +120 -0
- 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/numpy.pyj +10 -10
- package/src/lib/operator.pyj +11 -11
- package/src/lib/pythonize.pyj +20 -20
- package/src/lib/random.pyj +118 -118
- package/src/lib/re.pyj +470 -470
- package/src/lib/react.pyj +74 -0
- package/src/lib/traceback.pyj +63 -63
- package/src/lib/uuid.pyj +77 -77
- package/src/monaco-language-service/analyzer.js +131 -9
- package/src/monaco-language-service/builtins.js +17 -2
- package/src/monaco-language-service/completions.js +170 -1
- package/src/monaco-language-service/diagnostics.js +25 -3
- package/src/monaco-language-service/dts.js +550 -550
- package/src/monaco-language-service/index.js +17 -0
- package/src/monaco-language-service/scope.js +3 -0
- package/src/output/classes.pyj +128 -11
- package/src/output/codegen.pyj +17 -3
- package/src/output/comments.pyj +45 -45
- package/src/output/exceptions.pyj +201 -105
- package/src/output/functions.pyj +13 -16
- package/src/output/jsx.pyj +164 -0
- package/src/output/literals.pyj +28 -2
- package/src/output/loops.pyj +0 -9
- package/src/output/modules.pyj +2 -5
- package/src/output/operators.pyj +22 -2
- package/src/output/statements.pyj +2 -2
- package/src/output/stream.pyj +1 -13
- package/src/output/treeshake.pyj +182 -182
- package/src/output/utils.pyj +72 -72
- package/src/parse.pyj +434 -114
- package/src/string_interpolation.pyj +72 -72
- package/src/tokenizer.pyj +29 -0
- 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 +4 -4
- package/test/classes.pyj +56 -17
- package/test/collections.pyj +5 -5
- package/test/decorators.pyj +77 -77
- package/test/docstrings.pyj +39 -39
- package/test/elementmaker_test.pyj +45 -45
- package/test/functions.pyj +151 -151
- package/test/generators.pyj +41 -41
- package/test/generic.pyj +370 -370
- package/test/imports.pyj +72 -72
- 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/omit_function_metadata.pyj +20 -20
- package/test/python_compat.pyj +326 -0
- package/test/python_features.pyj +129 -29
- package/test/regexp.pyj +55 -55
- package/test/repl.pyj +121 -121
- package/test/scoped_flags.pyj +76 -76
- package/test/slice.pyj +105 -0
- package/test/str.pyj +25 -0
- package/test/unit/fixtures/fibonacci_expected.js +1 -1
- package/test/unit/index.js +2296 -71
- package/test/unit/language-service-builtins.js +70 -0
- package/test/unit/language-service-bundle.js +5 -5
- package/test/unit/language-service-completions.js +180 -0
- package/test/unit/language-service-dts.js +543 -543
- package/test/unit/language-service-hover.js +455 -455
- package/test/unit/language-service-index.js +350 -0
- package/test/unit/language-service-scope.js +255 -0
- package/test/unit/language-service.js +625 -4
- package/test/unit/run-language-service.js +1 -0
- package/test/unit/web-repl.js +437 -0
- package/tools/build-language-service.js +2 -2
- package/tools/cli.js +547 -547
- package/tools/compile.js +219 -219
- package/tools/compiler.js +0 -24
- package/tools/completer.js +131 -131
- package/tools/embedded_compiler.js +251 -251
- package/tools/export.js +3 -37
- 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 +128 -128
- package/tools/web_repl.js +95 -95
- package/try +41 -41
- package/web-repl/env.js +196 -74
- package/web-repl/index.html +163 -163
- package/web-repl/main.js +252 -254
- package/web-repl/prism.css +139 -139
- package/web-repl/prism.js +113 -113
- package/web-repl/rapydscript.js +227 -139
- package/web-repl/sha1.js +25 -25
- package/hack_demo.pyj +0 -112
- package/web-repl/language-service.js +0 -4187
package/bin/rapydscript
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// vim:ft=javascript:ts=4:et
|
|
3
|
-
|
|
4
|
-
"use strict";
|
|
5
|
-
|
|
6
|
-
function load(mod) {
|
|
7
|
-
return require('../tools/' + mod);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
var utils = load('utils');
|
|
11
|
-
|
|
12
|
-
// We need ES 6 generators so relaunch with the --harmony flag
|
|
13
|
-
if (!utils.generators_available()) {
|
|
14
|
-
if (process.execArgv.indexOf('--harmony') != -1) {
|
|
15
|
-
console.error('RapydScript needs ES 6 generators, update your version of nodejs');
|
|
16
|
-
process.exit(1);
|
|
17
|
-
}
|
|
18
|
-
var args = ['--harmony', module.filename].concat(process.argv.slice(2));
|
|
19
|
-
require('child_process').spawn(process.execPath, args, {stdio:'inherit'}).on('exit', function(code, signal) {
|
|
20
|
-
process.exit(code);
|
|
21
|
-
});
|
|
22
|
-
} else {
|
|
23
|
-
|
|
24
|
-
var start_time = new Date().getTime();
|
|
25
|
-
var path = require('path');
|
|
26
|
-
|
|
27
|
-
var argv = load('cli').argv;
|
|
28
|
-
|
|
29
|
-
var base_path = path.normalize(path.join(path.dirname(module.filename), ".."));
|
|
30
|
-
var src_path = path.join(base_path, 'src');
|
|
31
|
-
var lib_path = path.join(base_path, 'dev');
|
|
32
|
-
if (!utils.path_exists(path.join(lib_path, 'compiler.js'))) lib_path = path.join(base_path, 'release');
|
|
33
|
-
|
|
34
|
-
if (argv.mode === 'self') {
|
|
35
|
-
if (argv.files.length > 0) {
|
|
36
|
-
console.error("WARN: Ignoring input files since --self was passed");
|
|
37
|
-
}
|
|
38
|
-
load('self')(base_path, src_path, lib_path, argv.complete, argv.profile);
|
|
39
|
-
if (argv.test) {
|
|
40
|
-
console.log('\nRunning test suite...\n');
|
|
41
|
-
argv.files = []; // Ensure all tests are run
|
|
42
|
-
load('test')(argv, base_path, src_path, path.join(base_path, 'dev'));
|
|
43
|
-
}
|
|
44
|
-
process.exit(0);
|
|
45
|
-
} else
|
|
46
|
-
|
|
47
|
-
if (argv.mode === 'test') {
|
|
48
|
-
load('test')(argv, base_path, src_path, lib_path);
|
|
49
|
-
} else
|
|
50
|
-
|
|
51
|
-
if (argv.mode === 'lint') {
|
|
52
|
-
load('lint').cli(argv, base_path, src_path, lib_path);
|
|
53
|
-
} else
|
|
54
|
-
|
|
55
|
-
if (argv.mode === 'repl') {
|
|
56
|
-
load('repl')({'lib_path':lib_path, 'imp_path':path.join(src_path, 'lib'), show_js:!argv.no_js});
|
|
57
|
-
} else
|
|
58
|
-
|
|
59
|
-
if (argv.mode === 'gettext') {
|
|
60
|
-
load('gettext').cli(argv, base_path, src_path, lib_path);
|
|
61
|
-
} else
|
|
62
|
-
|
|
63
|
-
if (argv.mode === 'msgfmt') {
|
|
64
|
-
load('msgfmt').cli(argv, base_path, src_path, lib_path);
|
|
65
|
-
} else
|
|
66
|
-
|
|
67
|
-
{
|
|
68
|
-
load('compile')(start_time, argv, base_path, src_path, lib_path);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// vim:ft=javascript:ts=4:et
|
|
3
|
+
|
|
4
|
+
"use strict";
|
|
5
|
+
|
|
6
|
+
function load(mod) {
|
|
7
|
+
return require('../tools/' + mod);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
var utils = load('utils');
|
|
11
|
+
|
|
12
|
+
// We need ES 6 generators so relaunch with the --harmony flag
|
|
13
|
+
if (!utils.generators_available()) {
|
|
14
|
+
if (process.execArgv.indexOf('--harmony') != -1) {
|
|
15
|
+
console.error('RapydScript needs ES 6 generators, update your version of nodejs');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
var args = ['--harmony', module.filename].concat(process.argv.slice(2));
|
|
19
|
+
require('child_process').spawn(process.execPath, args, {stdio:'inherit'}).on('exit', function(code, signal) {
|
|
20
|
+
process.exit(code);
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
|
|
24
|
+
var start_time = new Date().getTime();
|
|
25
|
+
var path = require('path');
|
|
26
|
+
|
|
27
|
+
var argv = load('cli').argv;
|
|
28
|
+
|
|
29
|
+
var base_path = path.normalize(path.join(path.dirname(module.filename), ".."));
|
|
30
|
+
var src_path = path.join(base_path, 'src');
|
|
31
|
+
var lib_path = path.join(base_path, 'dev');
|
|
32
|
+
if (!utils.path_exists(path.join(lib_path, 'compiler.js'))) lib_path = path.join(base_path, 'release');
|
|
33
|
+
|
|
34
|
+
if (argv.mode === 'self') {
|
|
35
|
+
if (argv.files.length > 0) {
|
|
36
|
+
console.error("WARN: Ignoring input files since --self was passed");
|
|
37
|
+
}
|
|
38
|
+
load('self')(base_path, src_path, lib_path, argv.complete, argv.profile);
|
|
39
|
+
if (argv.test) {
|
|
40
|
+
console.log('\nRunning test suite...\n');
|
|
41
|
+
argv.files = []; // Ensure all tests are run
|
|
42
|
+
load('test')(argv, base_path, src_path, path.join(base_path, 'dev'));
|
|
43
|
+
}
|
|
44
|
+
process.exit(0);
|
|
45
|
+
} else
|
|
46
|
+
|
|
47
|
+
if (argv.mode === 'test') {
|
|
48
|
+
load('test')(argv, base_path, src_path, lib_path);
|
|
49
|
+
} else
|
|
50
|
+
|
|
51
|
+
if (argv.mode === 'lint') {
|
|
52
|
+
load('lint').cli(argv, base_path, src_path, lib_path);
|
|
53
|
+
} else
|
|
54
|
+
|
|
55
|
+
if (argv.mode === 'repl') {
|
|
56
|
+
load('repl')({'lib_path':lib_path, 'imp_path':path.join(src_path, 'lib'), show_js:!argv.no_js});
|
|
57
|
+
} else
|
|
58
|
+
|
|
59
|
+
if (argv.mode === 'gettext') {
|
|
60
|
+
load('gettext').cli(argv, base_path, src_path, lib_path);
|
|
61
|
+
} else
|
|
62
|
+
|
|
63
|
+
if (argv.mode === 'msgfmt') {
|
|
64
|
+
load('msgfmt').cli(argv, base_path, src_path, lib_path);
|
|
65
|
+
} else
|
|
66
|
+
|
|
67
|
+
{
|
|
68
|
+
load('compile')(start_time, argv, base_path, src_path, lib_path);
|
|
69
|
+
}
|
|
70
|
+
}
|
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
|