forked from spawngrid/htoad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
htoad_utils.erl
38 lines (30 loc) · 926 Bytes
/
htoad_utils.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-module(htoad_utils).
-export([ensure/2, on/2, load/1, module/1, file/1, render/2, render/3, render/4]).
ensure(What, Object) ->
{ensure, What, Object}.
on([], Plan) ->
Plan;
on([H|T], Plan) ->
[{on, H, on(T, Plan)}];
on(What, Plan) ->
{on, What, Plan}.
load(File) ->
{load, File}.
module(Module) ->
{module, Module}.
file(File) ->
filename:absname(filename:join(os:getenv("HTOAD_CWD"), File)).
render(Template, Vars) ->
render(Template, [], Vars, []).
render(Template, Vars, RenderOpts) ->
render(Template, [], Vars, RenderOpts).
render(Template, Options, Vars, RenderOpts) ->
Module = list_to_atom("htoad_template_" ++ integer_to_list(erlang:phash2(Template))),
case code:which(Module) of
non_existing ->
erlydtl:compile(Template, Module, Options);
_ ->
ok
end,
{ok, Content} = Module:render(Vars, RenderOpts),
Content.