|
@@ -84,7 +84,7 @@ parse(File) ->
|
|
|
|
|
|
|
|
|
|
parse_transform({var, Line, Val}, Var, Val) when is_atom(Var) ->
|
|
parse_transform({var, Line, Val}, Var, Val) when is_atom(Var) ->
|
|
- %io:format("TRACE ~p:~p var_parse_transform: ~p~n",[?MODULE, ?LINE, Val]),
|
|
|
|
|
|
+ io:format("TRACE ~p:~p var_parse_transform1atom: ~p~n",[?MODULE, ?LINE, "Val"]),
|
|
{var, Line, Var}.
|
|
{var, Line, Var}.
|
|
|
|
|
|
|
|
|
|
@@ -98,21 +98,20 @@ parse_transform({block, _, Name, [nil, Block]}, #dtl{buffer = Buffer} = Dtl) ->
|
|
end;
|
|
end;
|
|
parse_transform(Other, #dtl{args = Args}) ->
|
|
parse_transform(Other, #dtl{args = Args}) ->
|
|
{Other, Args};
|
|
{Other, Args};
|
|
-parse_transform({var, _Line, Var}, Args) ->
|
|
|
|
|
|
+parse_transform({tree, variable, _, Var}, Args) ->
|
|
Var2 = list_to_atom(tl(atom_to_list(Var))),
|
|
Var2 = list_to_atom(tl(atom_to_list(Var))),
|
|
binary_string(proplists:get_value(Var2, Args));
|
|
binary_string(proplists:get_value(Var2, Args));
|
|
parse_transform(Other, _) ->
|
|
parse_transform(Other, _) ->
|
|
- %io:format("TRACE ~p:~p ~p~n",[?MODULE, ?LINE, other]),
|
|
|
|
Other.
|
|
Other.
|
|
|
|
|
|
|
|
|
|
parse_transform({block, _Line , _Name, [nil, T]}) ->
|
|
parse_transform({block, _Line , _Name, [nil, T]}) ->
|
|
parse_transform(T);
|
|
parse_transform(T);
|
|
parse_transform({var, _Line, Val}) ->
|
|
parse_transform({var, _Line, Val}) ->
|
|
- %io:format("TRACE ~p:~p var_parse_transform: ~p~n",[?MODULE, ?LINE, Val]),
|
|
|
|
|
|
+ io:format("TRACE ~p:~p var_parse_transform1: ~p~n",[?MODULE, ?LINE, Val]),
|
|
erl_syntax:variable(Val);
|
|
erl_syntax:variable(Val);
|
|
parse_transform(Other) ->
|
|
parse_transform(Other) ->
|
|
- %io:format("TRACE ~p:~p ~p~n",[?MODULE, ?LINE, other]),
|
|
|
|
|
|
+ io:format("TRACE ~p:~p ~p~n",[?MODULE, ?LINE, other]),
|
|
Other.
|
|
Other.
|
|
|
|
|
|
|
|
|
|
@@ -169,7 +168,7 @@ build_tree2(nil, [{var, _, Var}], #dtl{buffer = Buffer, args = Args, props = Pro
|
|
end;
|
|
end;
|
|
|
|
|
|
build_tree2(nil, [{tag, Line, TagName, TagArgs}], #dtl{buffer = Buffer, args = Args, ext = Ext, props = Props}) ->
|
|
build_tree2(nil, [{tag, Line, TagName, TagArgs}], #dtl{buffer = Buffer, args = Args, ext = Ext, props = Props}) ->
|
|
- case handle_tag(TagName, Line, TagArgs, Buffer, default, Ext) of
|
|
|
|
|
|
+ case handle_tag(TagName, Line, TagArgs, Buffer, Ext) of
|
|
{ok, Buffer1} ->
|
|
{ok, Buffer1} ->
|
|
{regular, lists:flatten([Buffer1, Buffer]), Args, Props};
|
|
{regular, lists:flatten([Buffer1, Buffer]), Args, Props};
|
|
Err ->
|
|
Err ->
|
|
@@ -206,8 +205,8 @@ build_tree2([H | T], [{var, _, Var}], #dtl{buffer = Buffer, args = Args} = Dtl)
|
|
build_tree2(H, T, Dtl1);
|
|
build_tree2(H, T, Dtl1);
|
|
|
|
|
|
build_tree2([H | T], [{tag, Line, TagName, TagArgs}], #dtl{buffer = Buffer, ext = Ext} = Dtl) ->
|
|
build_tree2([H | T], [{tag, Line, TagName, TagArgs}], #dtl{buffer = Buffer, ext = Ext} = Dtl) ->
|
|
- case handle_tag(TagName, Line, TagArgs, Buffer, default, Ext) of
|
|
|
|
- {ok, Buffer1} ->
|
|
|
|
|
|
+ case handle_tag(TagName, Line, TagArgs, Buffer, Ext) of
|
|
|
|
+ {ok, Buffer1} ->
|
|
build_tree2(H, T, Dtl#dtl{buffer = Buffer1});
|
|
build_tree2(H, T, Dtl#dtl{buffer = Buffer1});
|
|
Err ->
|
|
Err ->
|
|
Err
|
|
Err
|
|
@@ -252,17 +251,18 @@ handle_for(It, Var, HFor, TFor, #dtl{args = Args, ext = Ext}) ->
|
|
end.
|
|
end.
|
|
|
|
|
|
|
|
|
|
-handle_tag(TagName, Line, TagArgs, Acc0, default, Ext) ->
|
|
|
|
|
|
+handle_tag(TagName, Line, TagArgs, Acc0, Ext) ->
|
|
|
|
+ io:format("TRACE ~p:~p ~p~n",[?MODULE, ?LINE, TagArgs]),
|
|
case parse(filename:join([erlydtl_deps:get_base_dir(), "priv", "tags", atom_to_list(TagName) ++ Ext])) of
|
|
case parse(filename:join([erlydtl_deps:get_base_dir(), "priv", "tags", atom_to_list(TagName) ++ Ext])) of
|
|
{ok, ParentAst} ->
|
|
{ok, ParentAst} ->
|
|
[H|T]=ParentAst,
|
|
[H|T]=ParentAst,
|
|
{_, List, _, _} = build_tree(H, T, Ext),
|
|
{_, List, _, _} = build_tree(H, T, Ext),
|
|
- List = lists:foldl(fun(X, Acc) ->
|
|
|
|
|
|
+ List1 = lists:foldl(fun(X, Acc) ->
|
|
[parse_transform(X, TagArgs) | Acc]
|
|
[parse_transform(X, TagArgs) | Acc]
|
|
end,
|
|
end,
|
|
Acc0,
|
|
Acc0,
|
|
lists:reverse(List)),
|
|
lists:reverse(List)),
|
|
- {ok, List};
|
|
|
|
|
|
+ {ok, List1};
|
|
_ ->
|
|
_ ->
|
|
{error, {TagName, Line, "loading tag source template failed"}}
|
|
{error, {TagName, Line, "loading tag source template failed"}}
|
|
end.
|
|
end.
|