Skip to content

Commit d640562

Browse files
committed
Merge pull request #13 from marianoguerra/expose-macro-info
add option to get macro dict as result of parsing
2 parents 5121947 + 2369b4c commit d640562

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/aleppo.erl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
% Aleppo: ALternative Erlang Pre-ProcessOr
22
-module(aleppo).
3-
-export([process_file/1, process_tokens/1, process_tokens/2, scan_file/1]).
3+
-export([process_file/1, process_file/2, process_tokens/1, process_tokens/2, scan_file/1]).
44

55
-record(ale_context, {
66
include_trail = [],
@@ -9,10 +9,13 @@
99
}).
1010

1111
process_file(FileName) ->
12+
process_file(FileName, []).
13+
14+
process_file(FileName, Options) ->
1215
ModuleName = list_to_atom(filename:rootname(filename:basename(FileName))),
1316
case scan_file(FileName) of
1417
{ok, Tokens} ->
15-
process_tokens(Tokens, [{file, FileName}, {module, ModuleName}]);
18+
process_tokens(Tokens, [{file, FileName}, {module, ModuleName}|Options]);
1619
Error ->
1720
Error
1821
end.
@@ -23,6 +26,7 @@ process_tokens(Tokens) ->
2326
% Valid options:
2427
% - file: The path of the file being processed
2528
% - include: A list of directories to include in the .hrl search path
29+
% - return_macros: return the macro dict in result if successful
2630
process_tokens(Tokens, Options) ->
2731
{Tokens1, Module} = mark_keywords(Tokens),
2832
case aleppo_parser:parse(Tokens1) of
@@ -63,8 +67,12 @@ process_tree(ParseTree, Options) ->
6367
macro_dict = Dict2 },
6468

6569
try process_tree(ParseTree, TokenAcc, Context) of
66-
{_MacroDict, RevTokens} when is_list(RevTokens) ->
67-
{ok, lists:reverse(RevTokens)}
70+
{MacroDict, RevTokens} when is_list(RevTokens) ->
71+
FinalTokens = lists:reverse(RevTokens),
72+
case proplists:get_value(return_macros, Options, false) of
73+
true -> {ok, FinalTokens, MacroDict};
74+
_ -> {ok, FinalTokens}
75+
end
6876
catch
6977
_:Reason ->
7078
{error, Reason}

0 commit comments

Comments
 (0)