|
@@ -206,6 +206,7 @@ create_module(List, Args, Module, Function, Reload) ->
|
|
[ModAST, CmpAST] = [erl_syntax:attribute(erl_syntax:atom(X), [erl_syntax:atom(Y)]) ||
|
|
[ModAST, CmpAST] = [erl_syntax:attribute(erl_syntax:atom(X), [erl_syntax:atom(Y)]) ||
|
|
{X, Y} <- [{"module", Module}, {"compile", "export_all"}]],
|
|
{X, Y} <- [{"module", Module}, {"compile", "export_all"}]],
|
|
Forms = [erl_syntax:revert(X) || X <- [ModAST, CmpAST, FuncAST]],
|
|
Forms = [erl_syntax:revert(X) || X <- [ModAST, CmpAST, FuncAST]],
|
|
|
|
+%io:format("TRACE ~p:~p Forms: ~p~n",[?MODULE, ?LINE, Forms]),
|
|
case compile:forms(Forms) of
|
|
case compile:forms(Forms) of
|
|
{ok, Module1, Bin} ->
|
|
{ok, Module1, Bin} ->
|
|
case erlydtl:write_beam(Module1, Bin, "ebin") of
|
|
case erlydtl:write_beam(Module1, Bin, "ebin") of
|
|
@@ -226,201 +227,4 @@ create_module(List, Args, Module, Function, Reload) ->
|
|
end;
|
|
end;
|
|
_ ->
|
|
_ ->
|
|
{error, "compilation failed"}
|
|
{error, "compilation failed"}
|
|
- end.
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-%% build_tree(nil, [{extends, _Line, Name}], Out, Args, RelDir, Ext, _, _) ->
|
|
|
|
-%% case parse(filename:join([RelDir, Name])) of
|
|
|
|
-%% {ok, ParentAst} ->
|
|
|
|
-%% [H|T]=ParentAst,
|
|
|
|
-%% {_, List, Args1, _} = build_tree(H, T, [], [], RelDir, Ext, [], []),
|
|
|
|
-%% {List3, Args3} = lists:foldl(fun(X, {List2, Args2}) ->
|
|
|
|
-%% {List4, Args4} = parse_transform(X, Out, Args2, Ext, [],[]),
|
|
|
|
-%% {[List4 | List2], Args4}
|
|
|
|
-%% end,
|
|
|
|
-%% {[], Args1},
|
|
|
|
-%% List),
|
|
|
|
-%% {inherited, lists:reverse(lists:flatten([List3])), lists:flatten(Args3), []};
|
|
|
|
-%% {error, Msg} ->
|
|
|
|
-%% io:format("TRACE ~p:~p Parent Parser failure: ~p~n",[?MODULE, ?LINE, Name]),
|
|
|
|
-%% {regular, Out, Args, []}
|
|
|
|
-%% end;
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [{var, Line, Var}], Out, Args, DocRoot, Ext, Var, Rec) ->
|
|
|
|
-%% {regular, [erl_syntax:variable(Var) | Out], Args, Rec};
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [{var, Line, Ns, Var}], Out, Args, DocRoot, Ext, Ns, Rec) ->
|
|
|
|
-%% Var1 = lists:concat([Ns, ".", Var]),
|
|
|
|
-%% Rec1 = [list_to_atom(Var1) | Rec],
|
|
|
|
-%% {regular, [erl_syntax:variable(Var1) | Out], Args, Rec1};
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [{var, Line, Var}], Out, Args, _, _, _, Rec) ->
|
|
|
|
-%% case lists:member(Var, Args) of
|
|
|
|
-%% true ->
|
|
|
|
-%% {regular, [{var, Line, Var} | Out], Args, Rec};
|
|
|
|
-%% _ ->
|
|
|
|
-%% {regular, [{var, Line, Var} | Out], [Var | Args], Rec}
|
|
|
|
-%% end;
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [{tag, _Line, TagName, TagArgs}], Out, Args, _, Ext, _, Rec) ->
|
|
|
|
-%% Out2 = load_tag(TagName, TagArgs, Out, default, Ext),
|
|
|
|
-%% {regular, Out2, Args, Rec};
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [{for, _Line, It, Var, [HFor | TFor]}], Out, Args, _, Ext, _, Rec) ->
|
|
|
|
-%% {_, List1, Args1, Rec1} = build_tree(HFor, TFor, [], Args, undefined, Ext, It, []),
|
|
|
|
-%% Args2 = case lists:member(Var, Args1) of
|
|
|
|
-%% true ->
|
|
|
|
-%% Args1;
|
|
|
|
-%% _ ->
|
|
|
|
-%% [Var | Args1]
|
|
|
|
-%% end,
|
|
|
|
-%% ItAST = erl_syntax:variable(It),
|
|
|
|
-%% Out1 = case Rec1 of
|
|
|
|
-%% [] ->
|
|
|
|
-%% BodyAST = erl_syntax:generator(ItAST, erl_syntax:variable(Var)),
|
|
|
|
-%% erl_syntax:list_comp(erl_syntax:list(List1), [BodyAST]);
|
|
|
|
-%% _ ->
|
|
|
|
-%% FunBodyAST = lists:foldl(fun(X, Acc) ->
|
|
|
|
-%% [_,Prop] = string:tokens(tl(atom_to_list(X)), "."),
|
|
|
|
-%% A = erl_syntax:variable(X),
|
|
|
|
-%% B = erl_syntax:application(erl_syntax:atom(proplists),
|
|
|
|
-%% erl_syntax:atom(get_value), [erl_syntax:atom(Prop), ItAST]),
|
|
|
|
-%% [erl_syntax:match_expr(A, B) | Acc]
|
|
|
|
-%% end,
|
|
|
|
-%% [erl_syntax:list(List1)],
|
|
|
|
-%% Rec1),
|
|
|
|
-%% FunClauseAST = erl_syntax:clause([ItAST], none, FunBodyAST),
|
|
|
|
-%% erl_syntax:application(erl_syntax:atom(lists),
|
|
|
|
-%% erl_syntax:atom(map),
|
|
|
|
-%% [erl_syntax:fun_expr([FunClauseAST]), erl_syntax:variable(Var)])
|
|
|
|
-%% end,
|
|
|
|
-%% {regular, Out1, Args2, Rec};
|
|
|
|
-%%
|
|
|
|
-%% build_tree(nil, [Token], Out, Args, _, _, _, Rec) ->
|
|
|
|
-%% {regular, [Token | Out], Args, Rec};
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [{var, Line, Var}], Out, Args, DocRoot, Ext, Var, Rec) ->
|
|
|
|
-%% build_tree(H, T, [erl_syntax:variable(Var) | Out], Args, DocRoot, Ext, Var, Rec);
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [{var, Line, Ns, Var}], Out, Args, DocRoot, Ext, Ns, Rec) ->
|
|
|
|
-%% Var1 = lists:concat([Ns, ".", Var]),
|
|
|
|
-%% Rec1 = [list_to_atom(Var1) | Rec],
|
|
|
|
-%% build_tree(H, T, [erl_syntax:variable(Var1) | Out], Args, DocRoot, Ext, Ns, Rec1);
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [{var, Line, Var}], Out, Args, DocRoot, Ext, IgnoreVar, Rec) ->
|
|
|
|
-%% case lists:member(Var, Args) of
|
|
|
|
-%% true ->
|
|
|
|
-%% build_tree(H, T, [{var, Line, Var} | Out], Args, DocRoot, Ext, IgnoreVar, Rec);
|
|
|
|
-%% _ ->
|
|
|
|
-%% build_tree(H, T, [{var, Line, Var} | Out], [Var | Args], DocRoot, Ext, IgnoreVar, Rec)
|
|
|
|
-%% end;
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [{tag, _Line, TagName, TagArgs}], Out, Args, DocRoot, Ext, IgnoreVar, Rec) ->
|
|
|
|
-%% Out2 = load_tag(TagName, TagArgs, Out, default, Ext),
|
|
|
|
-%% build_tree(H, T, Out2, Args, DocRoot, Ext, IgnoreVar, Rec);
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [{for, _Line, It, Var, [HFor | TFor]}], Out, Args, DocRoot, Ext, IgnoreVar, Rec) ->
|
|
|
|
-%% {_, List1, Args1, Rec1} = build_tree(HFor, TFor, [], Args, undefined, Ext, It, []),
|
|
|
|
-%% Args2 = case lists:member(Var, Args1) of
|
|
|
|
-%% true ->
|
|
|
|
-%% Args1;
|
|
|
|
-%% _ ->
|
|
|
|
-%% [Var | Args1]
|
|
|
|
-%% end,
|
|
|
|
-%% ItAST = erl_syntax:variable(It),
|
|
|
|
-%% Out1 = case Rec1 of
|
|
|
|
-%% [] ->
|
|
|
|
-%% BodyAST = erl_syntax:generator(ItAST, erl_syntax:variable(Var)),
|
|
|
|
-%% erl_syntax:list_comp(erl_syntax:list(List1), [BodyAST]);
|
|
|
|
-%% _ ->
|
|
|
|
-%% FunBodyAST = lists:foldl(fun(X, Acc) ->
|
|
|
|
-%% [_,Prop] = string:tokens(tl(atom_to_list(X)), "."),
|
|
|
|
-%% A = erl_syntax:variable(X),
|
|
|
|
-%% B = erl_syntax:application(erl_syntax:atom(proplists),
|
|
|
|
-%% erl_syntax:atom(get_value), [erl_syntax:atom(Prop), ItAST]),
|
|
|
|
-%% [erl_syntax:match_expr(A, B) | Acc]
|
|
|
|
-%% end,
|
|
|
|
-%% [erl_syntax:list(List1)],
|
|
|
|
-%% Rec1),
|
|
|
|
-%% FunClauseAST = erl_syntax:clause([ItAST], none, FunBodyAST),
|
|
|
|
-%% erl_syntax:application(erl_syntax:atom(lists),
|
|
|
|
-%% erl_syntax:atom(map),
|
|
|
|
-%% [erl_syntax:fun_expr([FunClauseAST]), erl_syntax:variable(Var)])
|
|
|
|
-%% end,
|
|
|
|
-%% build_tree(H, T, lists:flatten([Out1, Out]), Args2, DocRoot, Ext, IgnoreVar, Rec);
|
|
|
|
-%%
|
|
|
|
-%% build_tree([H | T], [Token], Out, Args, DocRoot, Ext, IgnoreVar, Rec) ->
|
|
|
|
-%% build_tree(H, T, [Token | Out], Args, DocRoot, Ext, IgnoreVar, Rec).
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% parse_transform({block, _Line, Name, [nil, Val]}, List, Args, Ext, IgnoreVar, Rec) ->
|
|
|
|
-%% case lists:keysearch(Name, 3, List) of
|
|
|
|
-%% false ->
|
|
|
|
-%% parse_transform(Val, List, Args, Ext, IgnoreVar, Rec);
|
|
|
|
-%% {value, {_, _, _, [H | T]}} ->
|
|
|
|
-%% {_, List2, Args2, Rec1} = build_tree(H, T, [], Args, undefined, Ext, IgnoreVar, Rec),
|
|
|
|
-%% parse_transform(lists:reverse(List2), List, Args2, Ext, IgnoreVar, Rec1)
|
|
|
|
-%% end;
|
|
|
|
-%% parse_transform(Other, _What, Args, _, _, _) ->
|
|
|
|
-%% {Other, Args}.
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% parse_transform({var, Line, Val}, Var, Val) when is_atom(Var) ->
|
|
|
|
-%% {var, Line, Var}.
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% parse_transform({var, _Line, Var}, Args) ->
|
|
|
|
-%% Var2 = list_to_atom(tl(atom_to_list(Var))),
|
|
|
|
-%% binary_string(proplists:get_value(Var2, Args));
|
|
|
|
-%% parse_transform(Other, _) ->
|
|
|
|
-%% Other.
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% parse_transform({block, _Line , _Name, [nil, T]}) ->
|
|
|
|
-%% parse_transform(T);
|
|
|
|
-%% parse_transform({var, L, Val}) ->
|
|
|
|
-%% erl_syntax:variable(Val);
|
|
|
|
-%% parse_transform(Other) ->
|
|
|
|
-%% Other.
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% load_tag(TagName, TagArgs, Acc0, default, Ext) ->
|
|
|
|
-%% case parse(filename:join([erlydtl_deps:get_base_dir(), "priv", "tags", atom_to_list(TagName) ++ Ext])) of
|
|
|
|
-%% {ok, ParentAst} ->
|
|
|
|
-%% [H|T]=ParentAst,
|
|
|
|
-%% {_, List, _, _} = build_tree(H, T, [], [], undefined, Ext, [], []),
|
|
|
|
-%% lists:foldl(fun(X, Acc) ->
|
|
|
|
-%% [parse_transform(X, TagArgs) | Acc]
|
|
|
|
-%% end,
|
|
|
|
-%% Acc0,
|
|
|
|
-%% lists:reverse(List));
|
|
|
|
-%% {error, Msg} ->
|
|
|
|
-%% Acc0
|
|
|
|
-%% end.
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% binary_string(String) ->
|
|
|
|
-%% erl_syntax:binary([erl_syntax:binary_field(erl_syntax:integer(X)) || X <- String]).
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% rel_dir(Dir, DocRoot) when Dir =:= DocRoot ->
|
|
|
|
-%% DocRoot;
|
|
|
|
-%% rel_dir(Dir, DocRoot) ->
|
|
|
|
-%% RelFile = string:substr(Dir, length(DocRoot)+2),
|
|
|
|
-%% filename:join([DocRoot, RelFile]).
|
|
|
|
-%%
|
|
|
|
-%%
|
|
|
|
-%% new_var(List, Acc) ->
|
|
|
|
-%% Var = list_to_atom(lists:concat(["A", Acc])),
|
|
|
|
-%% case lists:member(Var, List) of
|
|
|
|
-%% false ->
|
|
|
|
-%% Var;
|
|
|
|
-%% _ ->
|
|
|
|
-%% new_var(List, Acc + 1)
|
|
|
|
-%% end.
|
|
|
|
|
|
+ end.
|