A dependency-free WIT parser and MoonBit API scaffold generator
///|
let pkg = @moon_wit.parse(src) // WIT text → WitPackage (raises WitError)
///|
let bindings = @moon_wit.generate(pkg) // → bindings.mbt content
///|
let moon_pkg = @moon_wit.generate_moon_pkg(
@moon_wit.needs_list_import(pkg), // → moon.pkg content
)pub(all) suberror WitError {
At(Int, Int, String)
}pub enum TokenKind {
Ident(String)
Version(String)
LBrace
RBrace
LParen
RParen
Lt
Gt
Comma
Semi
Colon
Arrow
Eq
Dot
Slash
At
Star
Eof
} derive(Eq)pub struct UseName {
name : String
asName : String?
}fn case_name(name : String) -> Stringfn field_name(name : String) -> Stringfn generate_moon_pkg(use_list : Bool) -> Stringfn type_name(name : String) -> StringA dependency-free WIT parser and MoonBit API scaffold generator