Pure MoonBit BCP 47 language tag parser, canonicalizer, validator, and RFC 4647 matcher
moon add LuoYunxin1/moonlangtagmoon run cmd/demo --target wasm-gclet storefront = @langtag.canonicalize_text("EN-latn-us").unwrap()
// storefront == "en-US"let (bad, diags) = @langtag.parse_with_diagnostics("en-u")
// bad is None
// diags[0].format() == "1:4: error LANG013: extension singleton is missing subtags"let chosen = @langtag.negotiate(
"fr-CH, fr;q=0.9, en;q=0.8",
["en-US", "fr-FR", "de"],
).unwrap()
// chosen == "fr-FR"CATALOG: EN-latn-us -> en-US
CMS: 1:4: error LANG013: extension singleton is missing subtags
API: negotiated fr-FR
MoonLangTag acceptance: 3 scenarios passedlet tag = @langtag.parse("zh-yue-Hant-CN").unwrap()
let (built, _) = @langtag.builder("hy")
.with_script("Latn")
.with_region("IT")
.with_variant("arevela")
.build_canonical()
let hits = @langtag.basic_filter("de-DE", ["de-DE", "de-DE-1996", "de"])moon check --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
moon run cmd/demo --target wasm-gcfn TagBuilder::with_extension(self : TagBuilder, singleton : String, parts : Array[String]) -> TagBuilderInstall
Download zipPure MoonBit BCP 47 language tag parser, canonicalizer, validator, and RFC 4647 matcher