Current section
Files
Jump to
Current section
Files
src/handles.erl
-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 unwrap_template(template()) -> list(handles@internal@parser:ast()).
unwrap_template(Template) ->
{template, Ast} = Template,
Ast.
-spec prepare(binary()) -> {ok, template()} |
{error, handles@error:tokenizer_error()}.
prepare(Template) ->
_pipe = handles@internal@tokenizer:run(Template),
_pipe@1 = gleam@result:'try'(
_pipe,
fun(_capture) -> handles@internal@parser:run(_capture) end
),
gleam@result:map(_pipe@1, fun(Field@0) -> {template, Field@0} end).
-spec run(template(), handles@ctx:value(), list({binary(), template()})) -> {ok,
gleam@string_builder:string_builder()} |
{error, handles@error:runtime_error()}.
run(Template, Ctx, Partials) ->
_pipe = Partials,
_pipe@1 = gleam@list:map(
_pipe,
fun(_capture) ->
gleam@pair:map_second(_capture, fun unwrap_template/1)
end
),
_pipe@2 = maps:from_list(_pipe@1),
handles@internal@engine:run(unwrap_template(Template), Ctx, _pipe@2).