The Starlark configuration language, implemented in Moonbit
Dependencies
| Package | Import alias | Description |
|---|---|---|
| connect0459/starlark | @starlark | Quick-start entry points: exec (run a script), eval (evaluate an expression); re-exported Value, Module, EvalError |
| connect0459/starlark/eval | @eval | Entry functions (exec_file, eval_expr, call, source_program, parse_file, …) plus Thread, Module, Options, Program, Predeclared, Universe |
| connect0459/starlark/value | @value | Value, StringDict, StarlarkDict, StarlarkList, StarlarkString, CustomValue; value helpers (equal, len_of, as_float, …) |
| connect0459/starlark/unpack | @unpack | unpack_args, unpack_positional, unpack_args_with for host-defined built-ins |
| connect0459/starlark/errors | @errors | EvalError, SyntaxError, ResolveError, Position, CallStack, … |
| connect0459/starlark/syntax | @syntax | File, Expr — AST types for parse_file/parse_expr |
| connect0459/starlark/lib/json | @json | JSON encode / decode extension |
| connect0459/starlark/lib/math | @math | Math functions extension (mirrors Python's math module) |
| connect0459/starlark/lib/struct | @struct | struct, module, and gensym extension (starlarkstruct) |
| connect0459/starlark/lib/time | @time | Time and duration extension (starlarktime) |
moon add connect0459/starlarkimport {
"connect0459/starlark", // exec, eval — quick-start helpers with default thread and options
"connect0459/starlark/eval", // exec_file, eval_expr, call, parse_file, Thread, Module, Options, …
"connect0459/starlark/value", // Value, StringDict, StarlarkDict, value helpers (equal, len_of, …)
// "connect0459/starlark/errors", // EvalError, Position, CallStack, …
// "connect0459/starlark/syntax", // File, Expr (parse_file / parse_expr)
// "connect0459/starlark/unpack", // unpack_args* for host-defined built-ins
// optional extensions:
// "connect0459/starlark/lib/json",
// "connect0459/starlark/lib/math",
// "connect0459/starlark/lib/struct",
// "connect0459/starlark/lib/time",
}///|
test {
// Run a script and read back a module global.
match @starlark.exec("result = max([i * i for i in range(5)])") {
Ok(m) => assert_true(m.get("result") is Some(@value.Value::Int(16N)))
Err(e) => fail(e.msg())
}
// Evaluate a single expression.
match @starlark.eval("1 + 2 * 3") {
Ok(v) => assert_true(v is @value.Value::Int(7N))
Err(e) => fail(e.msg())
}
}///|
test {
let thread = @eval.Thread::new("main")
let src = "result = max([i * i for i in range(5)])"
match @eval.exec_file(thread, "example.star", src, @eval.Options::default()) {
Ok(m) => assert_true(m.get("result") is Some(@value.Value::Int(16N)))
Err(e) => fail(e.to_string())
}
}The Starlark configuration language, implemented in Moonbit
Dependencies