diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 38b8d37..49e026f 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -12,10 +12,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: install - run: | - curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash - echo "$HOME/.moon/bin" >> $GITHUB_PATH + - name: Setup Moonbit + uses: hustcer/setup-moonbit@v1 + # with: + # version: "nightly" # - name: moon check # run: moon check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fcd5a68 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: release + +on: + release: + types: [published] + +jobs: + publish: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Setup Moonbit + uses: hustcer/setup-moonbit@v1 + # with: + # version: "nightly" + + - name: moon check + run: moon update && moon version && moon check --target js + + - name: moon test + run: moon build --target js --debug + + - name: setup credentials + run: | + mkdir -p ~/.moon + echo '${{ secrets.MOON_CREDENTIALS }}' > ~/.moon/credentials.json + + - name: moon publish + run: moon publish diff --git a/.gitignore b/.gitignore index cdc7314..0ced372 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,7 @@ trace.json .DS_Store *.mbti + +_build + +.github/skills/ diff --git a/moon.mod.json b/moon.mod.json index ab3baaa..8839161 100644 --- a/moon.mod.json +++ b/moon.mod.json @@ -1,6 +1,6 @@ { "name": "tiye/cirru-parser", - "version": "0.2.1", + "version": "0.2.2", "deps": {}, "readme": "README.md", "repository": "https://github.com/Cirru/parser.mbt", diff --git a/src/main/main.mbt b/src/main/main.mbt index 3317eec..eb357e6 100644 --- a/src/main/main.mbt +++ b/src/main/main.mbt @@ -33,13 +33,13 @@ pub fn main_writer() -> Unit { let demo = "unfolding" let demo_file = fsReadSync("./test/cirru/\{demo}.cirru") let json_file = fsReadSync("./test/data/\{demo}.json") - let defined = (try? @json.parse(json_file)).unwrap() - let tree : Array[Cirru] = (try? @json.from_json(defined)).unwrap() + let defined = try! @json.parse(json_file) + let tree : Array[Cirru] = try! @json.from_json(defined) println("TREE:") for item in tree { println(item.to_json().stringify()) } - let ret = (try? Cirru::format(tree, use_inline=false)).unwrap() + let ret = try! Cirru::format(tree, use_inline=false) println("Generated:") println(ret) println("Expected:") diff --git a/src/main/moon.pkg b/src/main/moon.pkg new file mode 100644 index 0000000..d73e79c --- /dev/null +++ b/src/main/moon.pkg @@ -0,0 +1,11 @@ +import { + "moonbitlang/core/json" @json, + "tiye/cirru-parser" @lib, +} + +import { +} for "test" + +options( + "is-main": true, +) \ No newline at end of file diff --git a/src/main/moon.pkg.json b/src/main/moon.pkg.json deleted file mode 100644 index 1fe5a54..0000000 --- a/src/main/moon.pkg.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "is-main": true, - "import": [ - { - "path": "tiye/cirru-parser", - "alias": "lib" - } - ], - "test-import": [] -} diff --git a/src/moon.pkg b/src/moon.pkg new file mode 100644 index 0000000..e3dc4a7 --- /dev/null +++ b/src/moon.pkg @@ -0,0 +1,8 @@ +import { + "moonbitlang/core/cmp" @cmp, + "moonbitlang/core/json" @json, +} + +import { + "tiye/cirru-parser" @lib, +} for "test" \ No newline at end of file diff --git a/src/moon.pkg.json b/src/moon.pkg.json deleted file mode 100644 index 7b70eee..0000000 --- a/src/moon.pkg.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "import": [], - "test-import": [ - { - "path": "tiye/cirru-parser", - "alias": "lib" - } - ] -} diff --git a/src/parser.mbt b/src/parser.mbt index 0537db7..0f8f995 100644 --- a/src/parser.mbt +++ b/src/parser.mbt @@ -69,7 +69,9 @@ pub fn Cirru::parse(code : String) -> Array[Cirru] raise CirruParseError { } ///| -suberror CirruParseError String +suberror CirruParseError { + CirruParseError(String) +} ///| /// display Cirru parse error diff --git a/src/parser_test.mbt b/src/parser_test.mbt index c7f8a1a..3946a9c 100644 --- a/src/parser_test.mbt +++ b/src/parser_test.mbt @@ -16,12 +16,12 @@ test "existed demos" { for demo in demos { let demo_file = fsReadSync("./test/cirru/\{demo}.cirru") let json_file = fsReadSync("./test/data/\{demo}.json") - let tree = (try? Cirru::parse(demo_file)).unwrap().to_json().stringify() - let defined = (try? @json.parse(json_file)).unwrap() + let tree = (try! Cirru::parse(demo_file)).to_json().stringify() + let defined = try! @json.parse(json_file) let defined_str = defined.stringify() assert_eq(tree, defined_str) let formatted = Cirru::format(@json.from_json(defined), use_inline=false) - let ret = (try? Cirru::parse(formatted)).unwrap().to_json().stringify() + let ret = (try! Cirru::parse(formatted)).to_json().stringify() assert_eq(ret, defined_str) } } diff --git a/src/s_expr.mbt b/src/s_expr.mbt index 37b0bb2..15eb5c3 100644 --- a/src/s_expr.mbt +++ b/src/s_expr.mbt @@ -1,5 +1,7 @@ ///| -suberror FormatError String +suberror FormatError { + FormatError(String) +} ///| /// format program to Cirru to Lisp-like code @@ -56,7 +58,7 @@ fn Cirru::format_lispy_expr( } else { let s0 = token[0] if s0 == '|' || s0 == '"' { - let sliced = (try? token[1:]).unwrap().to_string() + let sliced = (try! token[1:]).to_string() "\"" + escape_string(sliced) + "\"" } else if token.contains(" ") || token.contains("\n") || diff --git a/src/writer.mbt b/src/writer.mbt index 3e30068..5cad15c 100644 --- a/src/writer.mbt +++ b/src/writer.mbt @@ -168,7 +168,9 @@ fn Cirru::get_node_kind(self : Cirru) -> WriterNode { } ///| -pub(all) suberror FormatCirruError String derive(Show) +pub(all) suberror FormatCirruError { + FormatCirruError(String) +} derive(Show) ///| fn generate_tree(