@@ -105,7 +105,7 @@ parse_tree(IncludeDirs, Source) ->
105105 end ,
106106
107107 {Comments , CodeTokens } = lists :partition (IsComment , NewTokens ),
108- Forms = ktn_lists : split_when (fun is_dot /1 , CodeTokens ),
108+ Forms = split_when (fun is_dot /1 , CodeTokens ),
109109 ParsedForms = lists :map (fun erl_parse :parse_form /1 , Forms ),
110110 Children = [to_map (Parsed ) || {ok , Parsed } <- ParsedForms ],
111111
@@ -139,7 +139,7 @@ eval(Source, Bindings) ->
139139consult (Source ) ->
140140 SourceStr = to_str (Source ),
141141 {ok , Tokens , _ } = erl_scan :string (SourceStr ),
142- Forms = ktn_lists : split_when (fun is_dot /1 , Tokens ),
142+ Forms = split_when (fun is_dot /1 , Tokens ),
143143 ParseFun = fun (Form ) ->
144144 {ok , Expr } = erl_parse :parse_exprs (Form ),
145145 Expr
@@ -751,3 +751,32 @@ to_map(Parsed) when is_tuple(Parsed) ->
751751 throw ({unhandled_abstract_form , Parsed });
752752to_map (Parsed ) ->
753753 throw ({unexpected_abstract_form , Parsed }).
754+
755+ % % @doc Splits a list whenever an element satisfies the When predicate.
756+ % % Returns a list of lists where each list includes the matched element
757+ % % as its last one.
758+ % % E.g.
759+ % % <code>
760+ % % split_when(fun (X) -> $. == X end, "a.b.c") = ["a.", "b.", "c"]
761+ % % </code>
762+ % % NOTE: Copied from ktn_lists not to bring the whole erlang-katana
763+ % % repo as a dependency here
764+ % % @end
765+ - spec split_when (fun (), list ()) -> list ().
766+ split_when (When , List ) ->
767+ split_when (When , List , [[]]).
768+
769+ split_when (When , [], [[] | Results ]) ->
770+ split_when (When , [], Results );
771+ split_when (_When , [], Results ) ->
772+ Reversed = lists :map (fun lists :reverse /1 , Results ),
773+ lists :reverse (Reversed );
774+ split_when (When , [Head | Tail ], [Current0 | Rest ]) ->
775+ Current = [Head | Current0 ],
776+ Result = case When (Head ) of
777+ true ->
778+ [[], Current | Rest ];
779+ false ->
780+ [Current | Rest ]
781+ end ,
782+ split_when (When , Tail , Result ).
0 commit comments