-module(handles). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([prepare/1, run/2]). -export_type([template/0]). -opaque template() :: {template, list(handles@internal@parser:ast())}. -spec prepare(binary()) -> {ok, template()} | {error, handles@error:tokenizer_error()}. prepare(Template) -> _pipe = handles@internal@tokenizer:run(Template, 0, []), gleam@result:map( _pipe, fun(Tokens) -> Ast = handles@internal@parser:run(Tokens, []), {template, Ast} end ). -spec run(template(), handles@ctx:value()) -> {ok, binary()} | {error, handles@error:runtime_error()}. run(Template, Ctx) -> {template, Ast} = Template, handles@internal@engine:run(Ast, Ctx, gleam@string_builder:new()).