terminfo(5) terminal capability library in pure MoonBit: compiled binary format, source language, and tparm parameter expansion
///|
let entry = @terminfo.compile(@terminfo.parse_source(src), "adm3a")
///|
let bytes = @terminfo.to_bytes(entry) // a compiled terminfo entry
///|
let parsed = @terminfo.parse(bytes) // read it back, losslessly
///|
let seq = @terminfo.tparm( // expand a capability value
parsed.get_str("cup").unwrap(),
[5, 10],
)@terminfo.tparm(b"\x1b[%p1%{32}%+%c", [1]) // b"\x1b[!"
@terminfo.tparm(b"%?%p1%tYES%eNO%;", [0]) // b"NO"python scripts/gen_caps.py Caps > caps.mbtmoon run cmd/main -- --term xterm-256color clear
moon run cmd/main -- --term adm3a cup 5 10
moon run cmd/main -- --term linux setaf 4moon test # 31 tests: golden vectors from term(5), round-trips, tparmpub suberror ExpandError {
BadPercent(String)
StackUnderflow(String)
Unbalanced(String)
}pub suberror ParseError {
BadMagic(Int)
Truncated
BadCount(String)
BadOffset(String)
CyclicUse(String)
BadSyntax(String)
}fn strip_padding(s : Bytes) -> Bytesfn tparm(fmt : Bytes, params : Array[Int], string_params? : Array[Bytes]) -> Bytes raise ExpandErrorInstall
Download zipterminfo(5) terminal capability library in pure MoonBit: compiled binary format, source language, and tparm parameter expansion