-module(handles). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([prepare/1, run/3]). -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(), list({binary(), template()})) -> {ok, binary()} | {error, handles@error:runtime_error()}. run(Template, Ctx, Partials) -> {template, Ast} = Template, Partials_dict = begin _pipe = Partials, _pipe@1 = maps:from_list(_pipe), gleam@dict:map_values( _pipe@1, fun(_, Template@1) -> {template, Ast@1} = Template@1, Ast@1 end ) end, handles@internal@engine:run( Ast, Ctx, Partials_dict, gleam@string_builder:new() ).