A lightweight template engine for MoonBit.
moon add robinfang/moldlet output = @mold.render(
"Hello, {{ name }}!",
@mold.object({ "name": @mold.string("World") }),
)moon run src/examples/hello
moon run src/examples/include_loader
moon run src/examples/html_safe
moon run src/examples/custom_filter
moon run src/examples/from_jsonlet engine = @mold.Engine::new().with_autoescape(true)
let output = engine.render(
"{{ user_input }} | {{ trusted_html | safe }}",
@mold.object({
"user_input": @mold.string("<strong>escaped</strong>"),
"trusted_html": @mold.string("<em>kept</em>"),
}),
)pub fn render(source : String, ctx : Value) -> String raise MoldError
pub fn Template::parse(source : String) -> Template raise MoldError
pub fn Template::render(self : Template, ctx : Value) -> String raise MoldError
pub fn Template::source(self : Template) -> String
pub fn Template::ast(self : Template) -> Array[Node]
pub fn Template::inspect(self : Template) -> TemplateInspection
pub fn Engine::new() -> Engine
pub fn Engine::with_loader(self : Engine, loader : Loader) -> Engine
pub fn Engine::with_autoescape(self : Engine, autoescape : Bool) -> Engine
pub fn Engine::register_filter(self : Engine, name : String, filter : Filter) -> Unit raise MoldError
pub fn Engine::parse(self : Engine, source : String) -> Template raise MoldError
pub fn Engine::render(self : Engine, source : String, ctx : Value) -> String raise MoldError
pub fn Engine::inspect(self : Engine, source : String) -> TemplateInspection raise MoldError
pub fn inspect(source : String) -> TemplateInspection raise MoldErrorpub suberror MoldError {
LexerError((String, SourceSpan))
ParserError((String, SourceSpan))
UnknownFilter(String)
DuplicateFilter(String)
MissingVariable(String)
MissingInclude(String)
IncludeDepthExceeded
TypeMismatch((String, String))
} derive(Eq, Debug)pub struct Template {
source : String
ast : Array[Node]
filters : Array[FilterEntry]
loader : (String) -> String??
includes : Array[CompiledInclude]
autoescape : Bool
}A lightweight template engine for MoonBit.