diff --git a/src/jorge.erl b/src/jorge.erl index bc31eb5..02f83d4 100644 --- a/src/jorge.erl +++ b/src/jorge.erl @@ -72,9 +72,18 @@ jorge_list([], Acc) -> lists:reverse(Acc); jorge_list([undefined | Rest], Acc) -> jorge_list(Rest, Acc); +jorge_list([List | Rest], Acc) when is_list(List) -> + jorge_nested_list(List, Rest, Acc); jorge_list([Head | Rest], Acc) -> jorge_list(Rest, [jorge_node(Head) | Acc]). +jorge_nested_list([], Siblings, Acc) -> + jorge_list(Siblings, Acc); +jorge_nested_list([undefined | Rest], Siblings, Acc) -> + jorge_nested_list(Rest, Siblings, Acc); +jorge_nested_list([Head | Rest], Siblings, Acc) -> + jorge_nested_list(Rest, Siblings, [jorge_node(Head) | Acc]). + -ifdef(TEST). jorge_test() -> @@ -98,6 +107,19 @@ jorge_test() -> {spam, fun() -> eggs end} ]} } + ), + + Nested = [<<"">>, + [[<<"">>, <<"bar">>, <<"">>], + [<<"">>, <<"123">>, <<"">>], + [<<"">>, <<"456">>, <<"">>]], + <<"">>], + + Nested = jorge( + {nested, [ + {foo, bar}, + [{abc, 123}, undefined, {def, 456}] + ]} ). -endif.