moon_config

    MoonBit package configuration parser

    Download zip
    Version
    0.3.15
    License
    Apache-2.0
    Last updated
    yesterday
    Downloads
    27K

    Dependencies

    #moonbitlang/parser/moon_config

    moonbitlang/parser/moon_config parses MoonBit project configuration files into a small JSON-like AST plus diagnostics.

    It provides parse_moon_mod, parse_moon_pkg, and parse_moon_work for moon.mod, moon.pkg, and moon.work content.

    The parse functions also run source-level configuration validation while post-processing the raw AST, so their diagnostics include duplicate and unexpected top-level keys. Use validate_moon_mod, validate_moon_pkg, or validate_moon_work only when validating an already post-processed Ast.

    #Examples

    Parse a moon.mod file and convert the returned Ast to JSON:

    ///|
    test "parse moon.mod" {
    let source =
    #|name = "example/app"
    #|version = "0.1.0"
    #|import { "moonbitlang/x@0.4.6" }
    #|
    let (ast, reports) = @moon_config.parse_moon_mod(source)
    assert_eq(reports.length(), 0) // no error
    json_inspect(ast.to_json(), content={
    "name": "example/app",
    "version": "0.1.0",
    "deps": { "moonbitlang/x": "0.4.6" },
    })
    }

    Parse a moon.pkg file:

    ///|
    test "parse moon.pkg" {
    let source =
    #|import {
    #| "moonbitlang/core/json" @json,
    #|}
    #|options(
    #| "is-main": true,
    #|)
    #|
    let (ast, reports) = @moon_config.parse_moon_pkg(source)
    assert_eq(reports.length(), 0) // no error
    json_inspect(ast.to_json(), content={
    "import": [{ "path": "moonbitlang/core/json", "alias": "json" }],
    "is-main": true,
    })
    }

    Parse a moon.work file and check diagnostics:

    ///|
    test "parse moon.work" {
    let source =
    #|members = ["./app", "./shared"]
    #|preferred_target = "native"
    #|
    let (ast, reports) = @moon_config.parse_moon_work(source)
    assert_eq(reports.length(), 0) // no error
    json_inspect(ast.to_json(), content={
    "members": ["./app", "./shared"],
    "preferred_target": "native",
    })
    }

    parse_moon_mod

    fn parse_moon_mod(name? : String, source : String) -> (Ast, Array[
    Report
    ])

    Parse moon.mod source into the post-processed configuration AST.

    parse_moon_pkg

    fn parse_moon_pkg(name? : String, source : String) -> (Ast, Array[
    Report
    ])

    Parse moon.pkg source into the post-processed configuration AST.

    parse_moon_work

    fn parse_moon_work(name? : String, source : String) -> (Ast, Array[
    Report
    ])

    Parse moon.work source into the configuration AST.

    validate_moon_mod

    fn validate_moon_mod(ast : Ast) -> Array[
    Report
    ]

    Validate a post-processed moon.mod Ast.

    Source-level checks that need raw keys, such as duplicate options(...) blocks, are handled by parse_moon_mod.

    validate_moon_pkg

    fn validate_moon_pkg(ast : Ast) -> Array[
    Report
    ]

    Validate a post-processed moon.pkg Ast.

    Source-level checks that need raw keys, such as duplicate options(...) blocks, are handled by parse_moon_pkg.

    validate_moon_work

    fn validate_moon_work(ast : Ast) -> Array[
    Report
    ]

    Validate a moon.work Ast.

    Powered by MoonBit

    Site sourceReport issuePackagesBuild queueSkillsStatistics

    © 2026 mooncakes.io