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/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()).