Selaa lähdekoodia

Pretty print list of records and list values in fields

pull/442/head
Shunichi Shinohara 7 vuotta sitten
vanhempi
commit
a430820d8f
2 muutettua tiedostoa jossa 31 lisäystä ja 3 poistoa
  1. +9
    -2
      src/lager.erl
  2. +22
    -1
      test/pr_composite_test.erl

+ 9
- 2
src/lager.erl Näytä tiedosto

@ -538,13 +538,15 @@ unsafe_format(Fmt, Args) ->
_:_ -> io_lib:format("FORMAT ERROR: ~p ~p", [Fmt, Args])
end.
%% @doc Print a record lager found during parse transform
%% @doc Print a record or a list of records lager found during parse transform
pr(Record, Module) when is_tuple(Record), is_atom(element(1, Record)) ->
pr(Record, Module, []);
pr(List, Module) when is_list(List) ->
pr(List, Module, []);
pr(Record, _) ->
Record.
%% @doc Print a record lager found during parse transform
%% @doc Print a record or a list of records lager found during parse transform
pr(Record, Module, Options) when is_tuple(Record), is_atom(element(1, Record)), is_list(Options) ->
try
case is_record_known(Record, Module) of
@ -558,9 +560,14 @@ pr(Record, Module, Options) when is_tuple(Record), is_atom(element(1, Record)),
error:undef ->
Record
end;
pr(List, Module, Options) when is_list(List), is_list(Options) ->
[pr(Element, Module, Options) || Element <- List];
pr(Record, _, _) ->
Record.
zip([FieldName|RecordFields], [FieldValue|Record], Module, Options, ToReturn) when is_list(FieldValue) ->
zip(RecordFields, Record, Module, Options,
[{FieldName, pr(FieldValue, Module, Options)}|ToReturn]);
zip([FieldName|RecordFields], [FieldValue|Record], Module, Options, ToReturn) ->
Compress = lists:member(compress, Options),
case is_tuple(FieldValue) andalso

+ 22
- 1
test/pr_composite_test.erl Näytä tiedosto

@ -1,4 +1,4 @@
-module(pr_nested_record_test).
-module(pr_composite_test).
-compile([{parse_transform, lager_transform}]).
@ -17,3 +17,24 @@ nested_record_test() ->
[{field1, x},{field2, y}]}},
{field2, {}}]},
Pr_B).
list_field_test() ->
As = [#a{field1 = 1, field2 = a2},
#a{field1 = 2, field2 = a2}],
B = #b{field1 = As, field2 = b2},
Pr_B = lager:pr(B, ?MODULE),
?assertEqual({'$lager_record', b,
[{field1, [{'$lager_record', a,
[{field1, 1},{field2, a2}]},
{'$lager_record', a,
[{field1, 2},{field2, a2}]}]},
{field2, b2}]},
Pr_B).
list_of_records_test() ->
As = [#a{field1 = 1, field2 = a2},
#a{field1 = 2, field2 = a2}],
Pr_As = lager:pr(As, ?MODULE),
?assertEqual([{'$lager_record', a, [{field1, 1},{field2, a2}]},
{'$lager_record', a, [{field1, 2},{field2, a2}]}],
Pr_As).

Ladataan…
Peruuta
Tallenna