purus 0.2.0 → 0.3.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/README-ja.md +1 -1
- package/README.md +2 -2
- package/bin/purus.js +5 -0
- package/lib/build-wrapper.js +21 -2
- package/lib/create.js +2 -2
- package/lib/purus-compiler.js +25 -197
- package/lib/purus-core.js +4 -2
- package/package.json +1 -1
package/README-ja.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://purus.work)
|
|
4
4
|
|
|
5
|
-
[English](https://
|
|
5
|
+
[English](https://github.com/otoneko1102/purus#readme) | **日本語**
|
|
6
6
|
|
|
7
7
|
</div>
|
|
8
8
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://purus.work)
|
|
4
4
|
|
|
5
|
-
**English** | [日本語](https://
|
|
5
|
+
**English** | [日本語](https://github.com/otoneko1102/purus/blob/main/README-ja.md)
|
|
6
6
|
|
|
7
7
|
</div>
|
|
8
8
|
|
|
@@ -55,4 +55,4 @@ otoneko. https://github.com/otoneko1102
|
|
|
55
55
|
|
|
56
56
|
## License
|
|
57
57
|
|
|
58
|
-
Distributed under the Apache 2.0 License. See [LICENSE](https://
|
|
58
|
+
Distributed under the Apache 2.0 License. See [LICENSE](https://github.com/otoneko1102/purus/blob/main/LICENSE) for more information.
|
package/bin/purus.js
CHANGED
package/lib/build-wrapper.js
CHANGED
|
@@ -28,8 +28,27 @@ for (let i = 0; i < args.length; i++) {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (file) {
|
|
31
|
-
// Single file -
|
|
32
|
-
|
|
31
|
+
// Single file - handle directly via compile API
|
|
32
|
+
const source = fs.readFileSync(file, "utf8");
|
|
33
|
+
const useHeader = !noHeader;
|
|
34
|
+
const js = compile(source, { header: useHeader });
|
|
35
|
+
|
|
36
|
+
if (toStdout) {
|
|
37
|
+
process.stdout.write(js);
|
|
38
|
+
} else {
|
|
39
|
+
let ext = ".js";
|
|
40
|
+
if (file.endsWith(".cpurus")) ext = ".cjs";
|
|
41
|
+
else if (file.endsWith(".mpurus")) ext = ".mjs";
|
|
42
|
+
const base = file.replace(/\.(c|m)?purus$/, "");
|
|
43
|
+
const outputFile = output
|
|
44
|
+
? path.join(path.resolve(output), path.basename(base) + ext)
|
|
45
|
+
: base + ext;
|
|
46
|
+
if (output) {
|
|
47
|
+
fs.mkdirSync(path.resolve(output), { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
fs.writeFileSync(outputFile, js);
|
|
50
|
+
console.log(`Compiled ${file} -> ${outputFile}`);
|
|
51
|
+
}
|
|
33
52
|
} else {
|
|
34
53
|
let entryDir;
|
|
35
54
|
let outputDir;
|
package/lib/create.js
CHANGED
|
@@ -154,9 +154,9 @@ node_modules/
|
|
|
154
154
|
if (yesFlag) {
|
|
155
155
|
installDeps = true;
|
|
156
156
|
} else {
|
|
157
|
-
const answer = await question(rl, "\nInstall dependencies? (
|
|
157
|
+
const answer = await question(rl, "\nInstall dependencies? (Y/n) ");
|
|
158
158
|
installDeps =
|
|
159
|
-
answer.toLowerCase() === "y" || answer.toLowerCase() === "yes";
|
|
159
|
+
answer === "" || answer.toLowerCase() === "y" || answer.toLowerCase() === "yes";
|
|
160
160
|
}
|
|
161
161
|
|
|
162
162
|
if (installDeps) {
|
package/lib/purus-compiler.js
CHANGED
|
@@ -616,7 +616,6 @@ function $64$username$47$core$46$MatchBody$BlockBody(param0) {
|
|
|
616
616
|
$64$username$47$core$46$MatchBody$BlockBody.prototype.$tag = 1;
|
|
617
617
|
$64$username$47$core$46$MatchBody$BlockBody.prototype.$name = "BlockBody";
|
|
618
618
|
const _M0FP095_40moonbitlang_2fcore_2fbuiltin_2eStringBuilder_24as_24_40moonbitlang_2fcore_2fbuiltin_2eLogger = { method_0: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger13write__string, method_1: _M0IP016_24default__implP311moonbitlang4core7builtin6Logger16write__substringGRP311moonbitlang4core7builtin13StringBuilderE, method_2: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger11write__view, method_3: _M0IP311moonbitlang4core7builtin13StringBuilderP311moonbitlang4core7builtin6Logger11write__char };
|
|
619
|
-
const _M0FP48username4core3cmd4main7version = "0.2.0";
|
|
620
619
|
const _M0FP311moonbitlang4core7builtin33brute__force__find_2econstr_2f209 = 0;
|
|
621
620
|
const _M0FP311moonbitlang4core7builtin43boyer__moore__horspool__find_2econstr_2f195 = 0;
|
|
622
621
|
function _M0FP311moonbitlang4core5abort5abortGRP311moonbitlang4core7builtin9ArrayViewGsEE(msg) {
|
|
@@ -1244,10 +1243,10 @@ function _M0MP311moonbitlang4core6string6String4view(self, start_offset$46$opt,
|
|
|
1244
1243
|
function _M0MP311moonbitlang4core5array9ArrayView6lengthGsE(self) {
|
|
1245
1244
|
return self.end - self.start | 0;
|
|
1246
1245
|
}
|
|
1247
|
-
function
|
|
1246
|
+
function _M0MP311moonbitlang4core5array9ArrayView6lengthGcE(self) {
|
|
1248
1247
|
return self.end - self.start | 0;
|
|
1249
1248
|
}
|
|
1250
|
-
function
|
|
1249
|
+
function _M0MP311moonbitlang4core5array9ArrayView6lengthGyE(self) {
|
|
1251
1250
|
return self.end - self.start | 0;
|
|
1252
1251
|
}
|
|
1253
1252
|
function _M0MP311moonbitlang4core6string6String11from__array(chars) {
|
|
@@ -1504,15 +1503,15 @@ function _M0MP311moonbitlang4core5array5Array4pushGRP28username4core4StmtE(self,
|
|
|
1504
1503
|
function _M0MP311moonbitlang4core5array5Array4pushGcE(self, value) {
|
|
1505
1504
|
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1506
1505
|
}
|
|
1507
|
-
function _M0MP311moonbitlang4core5array5Array4pushGyE(self, value) {
|
|
1508
|
-
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1509
|
-
}
|
|
1510
1506
|
function _M0MP311moonbitlang4core5array5Array4pushGRP28username4core10ElIfBranchE(self, value) {
|
|
1511
1507
|
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1512
1508
|
}
|
|
1513
1509
|
function _M0MP311moonbitlang4core5array5Array4pushGsE(self, value) {
|
|
1514
1510
|
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1515
1511
|
}
|
|
1512
|
+
function _M0MP311moonbitlang4core5array5Array4pushGyE(self, value) {
|
|
1513
|
+
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1514
|
+
}
|
|
1516
1515
|
function _M0MP311moonbitlang4core5array5Array4pushGRP28username4core4ExprE(self, value) {
|
|
1517
1516
|
_M0MP311moonbitlang4core7builtin7JSArray4push(self, value);
|
|
1518
1517
|
}
|
|
@@ -7575,26 +7574,6 @@ function _M0MP28username4core9JsCodegen16generate_2einner(self, stmts, header, s
|
|
|
7575
7574
|
}
|
|
7576
7575
|
return _M0MP311moonbitlang4core7builtin13StringBuilder10to__string(self.buf);
|
|
7577
7576
|
}
|
|
7578
|
-
function _M0FP48username4core3cmd4main11print__help() {
|
|
7579
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`purus v${_M0FP48username4core3cmd4main7version} - A language that compiles to JavaScript`);
|
|
7580
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("");
|
|
7581
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("Usage:");
|
|
7582
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus build <file> Compile to JavaScript");
|
|
7583
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" .purus -> .js");
|
|
7584
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" .cpurus -> .cjs (CommonJS)");
|
|
7585
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" .mpurus -> .mjs (ES Module)");
|
|
7586
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus build --no-header <file> Compile without header comment");
|
|
7587
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus check <file.purus> Syntax check only");
|
|
7588
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus new <name> Create a new project");
|
|
7589
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus init Initialize project in current directory");
|
|
7590
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus version Show version");
|
|
7591
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(" purus help Show this help");
|
|
7592
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("");
|
|
7593
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("Aliases: compile = build, create = new");
|
|
7594
|
-
}
|
|
7595
|
-
function _M0FP48username4core3cmd4main14print__version() {
|
|
7596
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`purus v${_M0FP48username4core3cmd4main7version}`);
|
|
7597
|
-
}
|
|
7598
7577
|
function _M0FP48username4core3cmd4main10cmd__build(args) {
|
|
7599
7578
|
const file = { val: "" };
|
|
7600
7579
|
const no_header = { val: false };
|
|
@@ -7685,7 +7664,7 @@ function _M0FP48username4core3cmd4main10cmd__build(args) {
|
|
|
7685
7664
|
}
|
|
7686
7665
|
}
|
|
7687
7666
|
const stmts = _M0MP28username4core6Parser5parse(_M0MP28username4core6Parser3new(filtered));
|
|
7688
|
-
const header = no_header.val ? "" :
|
|
7667
|
+
const header = no_header.val ? "" : "// Generated by Purus 0.3.0";
|
|
7689
7668
|
const js = _M0MP28username4core9JsCodegen16generate_2einner(_M0MP28username4core9JsCodegen3new(), stmts, header, shebang.val);
|
|
7690
7669
|
if (to_stdout.val) {
|
|
7691
7670
|
_M0FP311moonbitlang4core7builtin7printlnGsE(js);
|
|
@@ -7809,118 +7788,6 @@ function _M0FP48username4core3cmd4main10cmd__check(file) {
|
|
|
7809
7788
|
_M0MP28username4core6Parser5parse(_M0MP28username4core6Parser3new(tokens));
|
|
7810
7789
|
_M0FP311moonbitlang4core7builtin7printlnGsE(`OK: ${file}`);
|
|
7811
7790
|
}
|
|
7812
|
-
function _M0FP48username4core3cmd4main8cmd__new(name) {
|
|
7813
|
-
if (name === "") {
|
|
7814
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("Error: project name required");
|
|
7815
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE("Usage: purus new <name>");
|
|
7816
|
-
return undefined;
|
|
7817
|
-
}
|
|
7818
|
-
if (_M0FP311moonbitlang1x2fs12path__exists(name)) {
|
|
7819
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Error: directory '${name}' already exists`);
|
|
7820
|
-
return undefined;
|
|
7821
|
-
}
|
|
7822
|
-
let _try_err;
|
|
7823
|
-
_L: {
|
|
7824
|
-
_L$2: {
|
|
7825
|
-
const _bind = _M0FP311moonbitlang1x2fs11create__dir(name);
|
|
7826
|
-
if (_bind.$tag === 1) {
|
|
7827
|
-
const _ok = _bind;
|
|
7828
|
-
_ok._0;
|
|
7829
|
-
} else {
|
|
7830
|
-
const _err = _bind;
|
|
7831
|
-
_try_err = _err._0;
|
|
7832
|
-
break _L$2;
|
|
7833
|
-
}
|
|
7834
|
-
break _L;
|
|
7835
|
-
}
|
|
7836
|
-
let msg;
|
|
7837
|
-
_L$3: {
|
|
7838
|
-
const _IOError = _try_err;
|
|
7839
|
-
const _msg = _IOError._0;
|
|
7840
|
-
msg = _msg;
|
|
7841
|
-
break _L$3;
|
|
7842
|
-
}
|
|
7843
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Error: cannot create directory: ${msg}`);
|
|
7844
|
-
return undefined;
|
|
7845
|
-
}
|
|
7846
|
-
let _try_err$2;
|
|
7847
|
-
_L$2: {
|
|
7848
|
-
_L$3: {
|
|
7849
|
-
const _bind = _M0FP311moonbitlang1x2fs11create__dir(`${name}/src`);
|
|
7850
|
-
if (_bind.$tag === 1) {
|
|
7851
|
-
const _ok = _bind;
|
|
7852
|
-
_ok._0;
|
|
7853
|
-
} else {
|
|
7854
|
-
const _err = _bind;
|
|
7855
|
-
_try_err$2 = _err._0;
|
|
7856
|
-
break _L$3;
|
|
7857
|
-
}
|
|
7858
|
-
break _L$2;
|
|
7859
|
-
}
|
|
7860
|
-
let msg;
|
|
7861
|
-
_L$4: {
|
|
7862
|
-
const _IOError = _try_err$2;
|
|
7863
|
-
const _msg = _IOError._0;
|
|
7864
|
-
msg = _msg;
|
|
7865
|
-
break _L$4;
|
|
7866
|
-
}
|
|
7867
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Error: cannot create src directory: ${msg}`);
|
|
7868
|
-
return undefined;
|
|
7869
|
-
}
|
|
7870
|
-
const main_purus = "-- main.purus\n\nconst message be ///Hello, World///\nconsole.log[message]\n";
|
|
7871
|
-
let _try_err$3;
|
|
7872
|
-
_L$3: {
|
|
7873
|
-
_L$4: {
|
|
7874
|
-
const _bind = _M0FP311moonbitlang1x2fs31write__string__to__file_2einner(`${name}/src/main.purus`, main_purus, "utf8");
|
|
7875
|
-
if (_bind.$tag === 1) {
|
|
7876
|
-
const _ok = _bind;
|
|
7877
|
-
_ok._0;
|
|
7878
|
-
} else {
|
|
7879
|
-
const _err = _bind;
|
|
7880
|
-
_try_err$3 = _err._0;
|
|
7881
|
-
break _L$4;
|
|
7882
|
-
}
|
|
7883
|
-
break _L$3;
|
|
7884
|
-
}
|
|
7885
|
-
let msg;
|
|
7886
|
-
_L$5: {
|
|
7887
|
-
const _IOError = _try_err$3;
|
|
7888
|
-
const _msg = _IOError._0;
|
|
7889
|
-
msg = _msg;
|
|
7890
|
-
break _L$5;
|
|
7891
|
-
}
|
|
7892
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Error: ${msg}`);
|
|
7893
|
-
return undefined;
|
|
7894
|
-
}
|
|
7895
|
-
const gitignore = "*.js\nnode_modules/\n";
|
|
7896
|
-
let _try_err$4;
|
|
7897
|
-
_L$4: {
|
|
7898
|
-
_L$5: {
|
|
7899
|
-
const _bind = _M0FP311moonbitlang1x2fs31write__string__to__file_2einner(`${name}/.gitignore`, gitignore, "utf8");
|
|
7900
|
-
if (_bind.$tag === 1) {
|
|
7901
|
-
const _ok = _bind;
|
|
7902
|
-
_ok._0;
|
|
7903
|
-
} else {
|
|
7904
|
-
const _err = _bind;
|
|
7905
|
-
_try_err$4 = _err._0;
|
|
7906
|
-
break _L$5;
|
|
7907
|
-
}
|
|
7908
|
-
break _L$4;
|
|
7909
|
-
}
|
|
7910
|
-
let msg;
|
|
7911
|
-
_L$6: {
|
|
7912
|
-
const _IOError = _try_err$4;
|
|
7913
|
-
const _msg = _IOError._0;
|
|
7914
|
-
msg = _msg;
|
|
7915
|
-
break _L$6;
|
|
7916
|
-
}
|
|
7917
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Error: ${msg}`);
|
|
7918
|
-
return undefined;
|
|
7919
|
-
}
|
|
7920
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Created project '${name}'`);
|
|
7921
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(` ${name}/src/main.purus`);
|
|
7922
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(` ${name}/.gitignore`);
|
|
7923
|
-
}
|
|
7924
7791
|
function _M0FP48username4core3cmd4main9cmd__init() {
|
|
7925
7792
|
if (!_M0FP311moonbitlang1x2fs12path__exists("src")) {
|
|
7926
7793
|
let _try_err;
|
|
@@ -7980,71 +7847,32 @@ function _M0FP48username4core3cmd4main9cmd__init() {
|
|
|
7980
7847
|
(() => {
|
|
7981
7848
|
const args = _M0FP311moonbitlang1x3sys14get__cli__args();
|
|
7982
7849
|
if (args.length < 2) {
|
|
7983
|
-
_M0FP48username4core3cmd4main11print__help();
|
|
7984
7850
|
return;
|
|
7985
7851
|
}
|
|
7986
7852
|
const cmd = _M0MP311moonbitlang4core5array5Array2atGsE(args, 1);
|
|
7987
7853
|
_L: {
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
_L
|
|
7991
|
-
|
|
7992
|
-
|
|
7993
|
-
|
|
7994
|
-
|
|
7995
|
-
|
|
7996
|
-
|
|
7997
|
-
|
|
7998
|
-
|
|
7999
|
-
|
|
8000
|
-
|
|
8001
|
-
|
|
8002
|
-
|
|
8003
|
-
|
|
8004
|
-
|
|
8005
|
-
|
|
8006
|
-
case "create": {
|
|
8007
|
-
break _L$3;
|
|
8008
|
-
}
|
|
8009
|
-
case "init": {
|
|
8010
|
-
_M0FP48username4core3cmd4main9cmd__init();
|
|
8011
|
-
return;
|
|
8012
|
-
}
|
|
8013
|
-
case "version": {
|
|
8014
|
-
break _L$2;
|
|
8015
|
-
}
|
|
8016
|
-
case "--version": {
|
|
8017
|
-
break _L$2;
|
|
8018
|
-
}
|
|
8019
|
-
case "-v": {
|
|
8020
|
-
break _L$2;
|
|
8021
|
-
}
|
|
8022
|
-
case "help": {
|
|
8023
|
-
break _L;
|
|
8024
|
-
}
|
|
8025
|
-
case "--help": {
|
|
8026
|
-
break _L;
|
|
8027
|
-
}
|
|
8028
|
-
case "-h": {
|
|
8029
|
-
break _L;
|
|
8030
|
-
}
|
|
8031
|
-
default: {
|
|
8032
|
-
_M0FP311moonbitlang4core7builtin7printlnGsE(`Unknown command: ${cmd}`);
|
|
8033
|
-
_M0FP48username4core3cmd4main11print__help();
|
|
8034
|
-
return;
|
|
8035
|
-
}
|
|
8036
|
-
}
|
|
8037
|
-
}
|
|
8038
|
-
_M0FP48username4core3cmd4main10cmd__build(_M0MP311moonbitlang4core5array9ArrayView9to__arrayGsE(_M0MP311moonbitlang4core5array5Array12view_2einnerGsE(args, 2, undefined)));
|
|
7854
|
+
switch (cmd) {
|
|
7855
|
+
case "build": {
|
|
7856
|
+
break _L;
|
|
7857
|
+
}
|
|
7858
|
+
case "compile": {
|
|
7859
|
+
break _L;
|
|
7860
|
+
}
|
|
7861
|
+
case "check": {
|
|
7862
|
+
const file = args.length > 2 ? _M0MP311moonbitlang4core5array5Array2atGsE(args, 2) : "";
|
|
7863
|
+
_M0FP48username4core3cmd4main10cmd__check(file);
|
|
7864
|
+
return;
|
|
7865
|
+
}
|
|
7866
|
+
case "init": {
|
|
7867
|
+
_M0FP48username4core3cmd4main9cmd__init();
|
|
7868
|
+
return;
|
|
7869
|
+
}
|
|
7870
|
+
default: {
|
|
7871
|
+
_M0FP311moonbitlang4core7builtin7printlnGsE(`Unknown command: ${cmd}`);
|
|
8039
7872
|
return;
|
|
8040
7873
|
}
|
|
8041
|
-
const name = args.length > 2 ? _M0MP311moonbitlang4core5array5Array2atGsE(args, 2) : "";
|
|
8042
|
-
_M0FP48username4core3cmd4main8cmd__new(name);
|
|
8043
|
-
return;
|
|
8044
7874
|
}
|
|
8045
|
-
_M0FP48username4core3cmd4main14print__version();
|
|
8046
|
-
return;
|
|
8047
7875
|
}
|
|
8048
|
-
|
|
7876
|
+
_M0FP48username4core3cmd4main10cmd__build(_M0MP311moonbitlang4core5array9ArrayView9to__arrayGsE(_M0MP311moonbitlang4core5array5Array12view_2einnerGsE(args, 2, undefined)));
|
|
8049
7877
|
})();
|
|
8050
7878
|
//# sourceMappingURL=main.js.map
|
package/lib/purus-core.js
CHANGED
|
@@ -30,14 +30,16 @@ function compile(source, options = {}) {
|
|
|
30
30
|
const fs = require("fs");
|
|
31
31
|
try {
|
|
32
32
|
fs.writeFileSync(tmpFile, source, "utf8");
|
|
33
|
-
const args = ["build", "--stdout"];
|
|
34
|
-
if (!header) args.push("--no-header");
|
|
33
|
+
const args = ["build", "--stdout", "--no-header"];
|
|
35
34
|
args.push(tmpFile);
|
|
36
35
|
const result = execFileSync(process.execPath, [COMPILER_JS, ...args], {
|
|
37
36
|
encoding: "utf8",
|
|
38
37
|
stdio: ["pipe", "pipe", "pipe"],
|
|
39
38
|
timeout: 30000,
|
|
40
39
|
});
|
|
40
|
+
if (header) {
|
|
41
|
+
return `// Generated by Purus ${VERSION}\n${result}`;
|
|
42
|
+
}
|
|
41
43
|
return result;
|
|
42
44
|
} finally {
|
|
43
45
|
try {
|