From b5467b0f57aa9dee643d6d8b4881c902babab3a5 Mon Sep 17 00:00:00 2001 From: Michal Piotrowski Date: Mon, 16 Mar 2020 14:39:24 +0100 Subject: [PATCH 1/2] Format code with rebar3_format plugin --- rebar.config | 2 +- src/exml.erl | 61 ++++++++--------- src/exml_nif.erl | 37 ++++++----- src/exml_query.erl | 155 ++++++++++++++++++++++++-------------------- src/exml_stream.erl | 52 ++++++--------- 5 files changed, 155 insertions(+), 152 deletions(-) diff --git a/rebar.config b/rebar.config index ff1beb6..5d09b81 100644 --- a/rebar.config +++ b/rebar.config @@ -15,7 +15,7 @@ ]} ]}. -{plugins, [pc]}. +{plugins, [pc, rebar3_format]}. % Interrupt compilation, if the artifact is not found {artifacts, ["priv/exml_nif.so"]}. diff --git a/src/exml.erl b/src/exml.erl index e8bfd76..b5ff748 100644 --- a/src/exml.erl +++ b/src/exml.erl @@ -14,20 +14,15 @@ -include("exml_stream.hrl"). -export([parse/1]). - -export([to_list/1, to_binary/1, to_iolist/1, xml_size/1, xml_sort/1, to_pretty_iolist/1]). - -export([]). --export_type([attr/0, - cdata/0, - element/0, - item/0]). +-export_type([attr/0, cdata/0, element/0, item/0]). -type attr() :: {binary(), binary()}. -type cdata() :: #xmlcdata{}. @@ -39,23 +34,23 @@ xml_size([]) -> 0; xml_size([Elem | Rest]) -> xml_size(Elem) + xml_size(Rest); -xml_size(#xmlcdata{ content = Content }) -> +xml_size(#xmlcdata{content = Content}) -> iolist_size(exml_nif:escape_cdata(Content)); -xml_size(#xmlel{ name = Name, attrs = Attrs, children = [] }) -> +xml_size(#xmlel{name = Name, attrs = Attrs, children = []}) -> 3 % Self-closing: - + byte_size(Name) + xml_size(Attrs); -xml_size(#xmlel{ name = Name, attrs = Attrs, children = Children }) -> + + byte_size(Name) + + xml_size(Attrs); +xml_size(#xmlel{name = Name, attrs = Attrs, children = Children}) -> % Opening and closing: <> - 5 + byte_size(Name)*2 - + xml_size(Attrs) + xml_size(Children); -xml_size(#xmlstreamstart{ name = Name, attrs = Attrs }) -> + 5 + byte_size(Name) * 2 + xml_size(Attrs) + xml_size(Children); +xml_size(#xmlstreamstart{name = Name, attrs = Attrs}) -> byte_size(Name) + 2 + xml_size(Attrs); -xml_size(#xmlstreamend{ name = Name }) -> +xml_size(#xmlstreamend{name = Name}) -> byte_size(Name) + 3; xml_size({Key, Value}) -> - byte_size(Key) - + 4 % ="" and whitespace before - + byte_size(Value). + byte_size(Key) + + 4 % ="" and whitespace before + + byte_size(Value). %% @doc Sort a (list of) `xmlel()`. %% @@ -71,17 +66,14 @@ xml_size({Key, Value}) -> xml_sort(#xmlcdata{} = Cdata) -> Cdata; xml_sort(#xmlel{} = El) -> - #xmlel{ attrs = Attrs, children = Children } = El, - El#xmlel{ - attrs = lists:sort(Attrs), - children = [ xml_sort(C) || C <- Children ] - }; -xml_sort(#xmlstreamstart{ attrs = Attrs } = StreamStart) -> - StreamStart#xmlstreamstart{ attrs = lists:sort(Attrs) }; + #xmlel{attrs = Attrs, children = Children} = El, + El#xmlel{attrs = lists:sort(Attrs), children = [xml_sort(C) || C <- Children]}; +xml_sort(#xmlstreamstart{attrs = Attrs} = StreamStart) -> + StreamStart#xmlstreamstart{attrs = lists:sort(Attrs)}; xml_sort(#xmlstreamend{} = StreamEnd) -> StreamEnd; xml_sort(Elements) when is_list(Elements) -> - lists:sort([ xml_sort(E) || E <- Elements ]). + lists:sort([xml_sort(E) || E <- Elements]). -spec to_list(element() | [exml_stream:element()]) -> string(). to_list(Element) -> @@ -112,13 +104,11 @@ to_iolist([_ | _] = Elements, Pretty) -> Head = hd(Elements), [Last | RevChildren] = lists:reverse(tl(Elements)), case {Head, Last} of - {#xmlstreamstart{name = Name, attrs = Attrs}, - #xmlstreamend{name = Name}} -> - Element = #xmlel{name = Name, attrs = Attrs, - children = lists:reverse(RevChildren)}, - to_binary_nif(Element, Pretty); - _ -> - [to_iolist(El, Pretty) || El <- Elements] + {#xmlstreamstart{name = Name, attrs = Attrs}, #xmlstreamend{name = Name}} -> + Element = #xmlel{name = Name, attrs = Attrs, children = lists:reverse(RevChildren)}, + to_binary_nif(Element, Pretty); + _ -> + [to_iolist(El, Pretty) || El <- Elements] end; to_iolist(#xmlstreamstart{name = Name, attrs = Attrs}, _Pretty) -> Result = to_binary_nif(#xmlel{name = Name, attrs = Attrs}, not_pretty), @@ -133,6 +123,9 @@ to_iolist(#xmlcdata{content = Content}, _Pretty) -> -spec to_binary_nif(element(), pretty | term()) -> binary(). to_binary_nif(#xmlel{} = Element, Pretty) -> case catch exml_nif:to_binary(Element, Pretty) of - {'EXIT', Reason} -> erlang:error({badxml, Element, Reason}); - Result when is_binary(Result) -> Result + {'EXIT', Reason} -> + erlang:error({badxml, Element, Reason}); + Result when is_binary(Result) -> + Result end. + diff --git a/src/exml_nif.erl b/src/exml_nif.erl index f430615..d895de6 100644 --- a/src/exml_nif.erl +++ b/src/exml_nif.erl @@ -11,11 +11,11 @@ -type parser() :: term(). -type stream_element() :: exml:element() | exml_stream:start() | exml_stream:stop(). --export([create/2, parse/1, parse_next/2, escape_cdata/1, - to_binary/2, reset_parser/1]). +-export([create/2, parse/1, parse_next/2, escape_cdata/1, to_binary/2, reset_parser/1]). + -export_type([parser/0, stream_element/0]). --on_load(load/0). +-on_load({load, 0}). %%%=================================================================== %%% Public API @@ -24,38 +24,43 @@ -spec load() -> any(). load() -> PrivDir = case code:priv_dir(?MODULE) of - {error, _} -> - EbinDir = filename:dirname(code:which(?MODULE)), - AppPath = filename:dirname(EbinDir), - filename:join(AppPath, "priv"); - Path -> - Path + {error, _} -> + EbinDir = filename:dirname(code:which(?MODULE)), + AppPath = filename:dirname(EbinDir), + filename:join(AppPath, "priv"); + Path -> + Path end, erlang:load_nif(filename:join(PrivDir, ?MODULE_STRING), none). --spec create(MaxChildSize :: non_neg_integer(), InfiniteStream :: boolean()) -> - {ok, parser()} | {error, Reason :: any()}. +-spec create(MaxChildSize :: non_neg_integer(), InfiniteStream :: boolean()) -> {ok, + parser()} | + {error, + Reason :: any()}. create(_, _) -> erlang:nif_error(not_loaded). -spec escape_cdata(Bin :: iodata()) -> binary(). escape_cdata(_Bin) -> - erlang:nif_error(not_loaded). + erlang:nif_error(not_loaded). -spec to_binary(Elem :: exml:element(), pretty | not_pretty) -> binary(). to_binary(_Elem, _Pretty) -> erlang:nif_error(not_loaded). --spec parse(Bin :: binary() | [binary()]) -> {ok, exml:element()} | {error, Reason :: any()}. +-spec parse(Bin :: binary() | [binary()]) -> {ok, exml:element()} | + {error, Reason :: any()}. parse(_) -> erlang:nif_error(not_loaded). --spec parse_next(parser(), Data :: binary() | [binary()]) -> - {ok, stream_element() | undefined, non_neg_integer()} | - {error, Reason :: any()}. +-spec parse_next(parser(), Data :: binary() | [binary()]) -> {ok, + stream_element() | undefined, + non_neg_integer()} | + {error, Reason :: any()}. parse_next(_, _) -> erlang:nif_error(not_loaded). -spec reset_parser(parser()) -> any(). reset_parser(_) -> erlang:nif_error(not_loaded). + diff --git a/src/exml_query.erl b/src/exml_query.erl index 5a609d5..3c11a4a 100644 --- a/src/exml_query.erl +++ b/src/exml_query.erl @@ -21,16 +21,21 @@ -export([cdata/1]). -type element_with_ns() :: {element_with_ns, binary()}. --type element_with_name_and_ns () :: {element_with_ns, binary(), binary()}. --type element_with_attr_of_value () :: {element_with_attr, binary(), binary()}. - --type path() :: [cdata | %% selects cdata from the element - {element, binary()} | % selects subelement with given name - {attr, binary()} | % selects attr of given name - element_with_ns() | % selects subelement with given namespace - element_with_name_and_ns() | % selects subelement with given name and namespace - element_with_attr_of_value() % selects subelement with given attribute and value - ]. +-type element_with_name_and_ns() :: {element_with_ns, binary(), binary()}. +-type element_with_attr_of_value() :: {element_with_attr, binary(), binary()}. +-type path() :: [cdata | + {element, binary()} | + {attr, binary()} | + element_with_ns() | + element_with_name_and_ns() | + element_with_attr_of_value()]. %% selects cdata from the element + % selects subelement with given name + + % selects attr of given name + % selects subelement with given namespace + + % selects subelement with given name and namespace + % selects subelement with given attribute and value -export_type([path/0]). @@ -92,10 +97,10 @@ subelement(Element, Name) -> -spec subelement(exml:element(), binary(), Other) -> exml:element() | Other. subelement(#xmlel{children = Children}, Name, Default) -> case lists:keyfind(Name, #xmlel.name, Children) of - false -> - Default; - Result -> - Result + false -> + Default; + Result -> + Result end. -spec subelement_with_ns(exml:element(), binary()) -> exml:element() | undefined. @@ -110,25 +115,28 @@ child_with_ns([], _, Default) -> Default; child_with_ns([#xmlel{} = Element | Rest], NS, Default) -> case attr(Element, <<"xmlns">>) of - NS -> - Element; - _ -> - child_with_ns(Rest, NS, Default) + NS -> + Element; + _ -> + child_with_ns(Rest, NS, Default) end; child_with_ns([_ | Rest], NS, Default) -> child_with_ns(Rest, NS, Default). --spec subelement_with_attr(exml:element(), AttrName :: binary(), AttrValue :: binary()) -> - exml:element() | undefined. +-spec subelement_with_attr(exml:element(), + AttrName :: binary(), + AttrValue :: binary()) -> exml:element() | undefined. subelement_with_attr(Element, AttrName, AttrValue) -> subelement_with_attr(Element, AttrName, AttrValue, undefined). --spec subelement_with_attr(Element, AttrName, AttrValue, Other) -> SubElement | Other when - Element :: exml:element(), - AttrName :: binary(), - AttrValue :: binary(), - SubElement :: exml:element(), - Other :: term(). +-spec subelement_with_attr(Element, AttrName, AttrValue, Other) -> SubElement | + Other when Element :: + exml:element(), + AttrName :: binary(), + AttrValue :: binary(), + SubElement :: + exml:element(), + Other :: term(). subelement_with_attr(#xmlel{children = Children}, AttrName, AttrValue, Default) -> child_with_attr(Children, AttrName, AttrValue, Default). @@ -136,70 +144,76 @@ child_with_attr([], _, _, Default) -> Default; child_with_attr([#xmlel{} = Element | Rest], AttrName, AttrVal, Default) -> case attr(Element, AttrName) of - AttrVal -> - Element; - _ -> - child_with_attr(Rest, AttrName, AttrVal, Default) + AttrVal -> + Element; + _ -> + child_with_attr(Rest, AttrName, AttrVal, Default) end; child_with_attr([_ | Rest], AttrName, AttrVal, Default) -> child_with_attr(Rest, AttrName, AttrVal, Default). - --spec subelement_with_name_and_ns(exml:element(), binary(), binary()) -> - exml:element() | undefined. +-spec subelement_with_name_and_ns(exml:element(), binary(), binary()) -> exml:element() | + undefined. subelement_with_name_and_ns(Element, Name, NS) -> subelement_with_name_and_ns(Element, Name, NS, undefined). --spec subelement_with_name_and_ns(exml:element(), binary(), binary(), Other) -> - exml:element() | Other. +-spec subelement_with_name_and_ns(exml:element(), + binary(), + binary(), + Other) -> exml:element() | Other. subelement_with_name_and_ns(Element, Name, NS, Default) -> case subelement(Element, Name, undefined) of - undefined -> - Default; - SubElement -> - subelement_or_default(SubElement, NS, Default) + undefined -> + Default; + SubElement -> + subelement_or_default(SubElement, NS, Default) end. subelement_or_default(SubElement, NS, Default) -> case attr(SubElement, <<"xmlns">>) of - NS -> - SubElement; - _ -> - Default + NS -> + SubElement; + _ -> + Default end. -spec subelements(exml:element(), binary()) -> [exml:element()]. subelements(#xmlel{children = Children}, Name) -> - lists:filter(fun(#xmlel{name = N}) when N =:= Name -> - true; - (_) -> - false - end, Children). + lists:filter(fun (#xmlel{name = N}) when N =:= Name -> + true; + (_) -> + false + end, + Children). -spec subelements_with_ns(exml:element(), binary()) -> [exml:element()]. subelements_with_ns(#xmlel{children = Children}, NS) -> - lists:filter(fun(#xmlel{} = Child) -> - NS =:= attr(Child, <<"xmlns">>); - (_) -> - false - end, Children). - --spec subelements_with_name_and_ns(exml:element(), binary(), binary()) -> [exml:element()]. -subelements_with_name_and_ns(#xmlel{children = Children}, Name, NS) -> - lists:filter(fun(#xmlel{name = SubName} = Child) -> - SubName =:= Name andalso + lists:filter(fun (#xmlel{} = Child) -> NS =:= attr(Child, <<"xmlns">>); - (_) -> - false - end, Children). + (_) -> + false + end, + Children). + +-spec subelements_with_name_and_ns(exml:element(), + binary(), + binary()) -> [exml:element()]. +subelements_with_name_and_ns(#xmlel{children = Children}, Name, NS) -> + lists:filter(fun (#xmlel{name = SubName} = Child) -> + SubName =:= Name andalso NS =:= attr(Child, <<"xmlns">>); + (_) -> + false + end, + Children). -spec subelements_with_attr(exml:element(), binary(), binary()) -> [exml:element()]. subelements_with_attr(#xmlel{children = Children}, AttrName, Value) -> - lists:filter(fun(#xmlel{} = Child) -> - Value =:= attr(Child, AttrName); - (_) -> - false - end, Children). + lists:filter(fun (#xmlel{} = Child) -> + Value =:= attr(Child, AttrName); + (_) -> + false + end, + Children). -spec cdata(exml:element()) -> binary(). cdata(#xmlel{children = Children}) -> @@ -212,8 +226,9 @@ attr(Element, Name) -> -spec attr(exml:element(), binary(), Other) -> binary() | Other. attr(#xmlel{attrs = Attrs}, Name, Default) -> case lists:keyfind(Name, 1, Attrs) of - {Name, Value} -> - Value; - false -> - Default + {Name, Value} -> + Value; + false -> + Default end. + diff --git a/src/exml_stream.erl b/src/exml_stream.erl index 27a910c..7508047 100644 --- a/src/exml_stream.erl +++ b/src/exml_stream.erl @@ -10,22 +10,11 @@ -include("exml_stream.hrl"). --export([new_parser/0, - new_parser/1, - parse/2, - reset_parser/1, - free_parser/1]). +-export([new_parser/0, new_parser/1, parse/2, reset_parser/1, free_parser/1]). --export_type([element/0, - start/0, - stop/0, - parser/0, - parser_opt/0]). +-export_type([element/0, start/0, stop/0, parser/0, parser_opt/0]). --record(parser, { - event_parser :: exml_nif:parser(), - buffer :: [binary()] - }). +-record(parser, {event_parser :: exml_nif:parser(), buffer :: [binary()]}). -type start() :: #xmlstreamstart{}. -type stop() :: #xmlstreamend{}. @@ -46,26 +35,26 @@ new_parser() -> new_parser([]). -spec new_parser([parser_opt()]) -> {ok, parser()} | {error, any()}. -new_parser(Opts)-> +new_parser(Opts) -> MaxChildSize = proplists:get_value(max_child_size, Opts, 0), InfiniteStream = proplists:get_value(infinite_stream, Opts, false), case exml_nif:create(MaxChildSize, InfiniteStream) of - {ok, EventParser} -> - {ok, #parser{event_parser = EventParser, buffer = []}}; - Error -> - Error + {ok, EventParser} -> + {ok, #parser{event_parser = EventParser, buffer = []}}; + Error -> + Error end. --spec parse(parser(), binary()) -> {ok, parser(), [exml_stream:element()]} - | {error, Reason :: any()}. +-spec parse(parser(), binary()) -> {ok, parser(), [exml_stream:element()]} | + {error, Reason :: any()}. parse(Parser, Input) when is_binary(Input) -> #parser{event_parser = EventParser, buffer = OldBuf} = Parser, Buffer = OldBuf ++ [Input], case parse_all(EventParser, Buffer, []) of - {ok, Elems, NewBuffer} -> - {ok, Parser#parser{buffer = NewBuffer}, Elems}; - Other -> - Other + {ok, Elems, NewBuffer} -> + {ok, Parser#parser{buffer = NewBuffer}, Elems}; + Other -> + Other end. -spec reset_parser(parser()) -> {ok, parser()}. @@ -86,12 +75,12 @@ parse_all(_Parser, [], Acc) -> parse_all(Parser, Buffer, Acc) -> Val = exml_nif:parse_next(Parser, Buffer), case Val of - {ok, undefined, Offset} -> - {ok, lists:reverse(Acc), drop_offset(Buffer, Offset)}; - {ok, Element, Offset} -> - parse_all(Parser, drop_offset(Buffer, Offset), [Element | Acc]); - {error, _} = Error -> - Error + {ok, undefined, Offset} -> + {ok, lists:reverse(Acc), drop_offset(Buffer, Offset)}; + {ok, Element, Offset} -> + parse_all(Parser, drop_offset(Buffer, Offset), [Element | Acc]); + {error, _} = Error -> + Error end. drop_offset(Buffer, 0) -> @@ -101,3 +90,4 @@ drop_offset([Front | Rest], Offset) when byte_size(Front) =< Offset -> drop_offset([Front | Rest], Offset) -> <<_:Offset/binary, Part/binary>> = Front, [Part | Rest]. + From 0b0cda3b3c7a46f4bf814cba0f55cfaee481bb5d Mon Sep 17 00:00:00 2001 From: Michal Piotrowski Date: Mon, 16 Mar 2020 15:06:52 +0100 Subject: [PATCH 2/2] Use 4 spaces for sub_ident --- rebar.config | 5 ++++ src/exml.erl | 26 ++++++++++----------- src/exml_nif.erl | 12 +++++----- src/exml_query.erl | 56 ++++++++++++++++++++++++--------------------- src/exml_stream.erl | 28 +++++++++++------------ 5 files changed, 68 insertions(+), 59 deletions(-) diff --git a/rebar.config b/rebar.config index 5d09b81..d99d6bf 100644 --- a/rebar.config +++ b/rebar.config @@ -50,3 +50,8 @@ {cover_export_enabled, true}. {coveralls_coverdata, "_build/test/cover/eunit.coverdata"}. {coveralls_service_name, "travis-ci"}. + +{format, [ + {formatter, default_formatter}, + {options, #{sub_indent => 4}} +]}. diff --git a/src/exml.erl b/src/exml.erl index b5ff748..b0fe348 100644 --- a/src/exml.erl +++ b/src/exml.erl @@ -38,8 +38,8 @@ xml_size(#xmlcdata{content = Content}) -> iolist_size(exml_nif:escape_cdata(Content)); xml_size(#xmlel{name = Name, attrs = Attrs, children = []}) -> 3 % Self-closing: - + byte_size(Name) - + xml_size(Attrs); + + byte_size(Name) + + xml_size(Attrs); xml_size(#xmlel{name = Name, attrs = Attrs, children = Children}) -> % Opening and closing: <> 5 + byte_size(Name) * 2 + xml_size(Attrs) + xml_size(Children); @@ -49,8 +49,8 @@ xml_size(#xmlstreamend{name = Name}) -> byte_size(Name) + 3; xml_size({Key, Value}) -> byte_size(Key) + - 4 % ="" and whitespace before - + byte_size(Value). + 4 % ="" and whitespace before + + byte_size(Value). %% @doc Sort a (list of) `xmlel()`. %% @@ -104,11 +104,11 @@ to_iolist([_ | _] = Elements, Pretty) -> Head = hd(Elements), [Last | RevChildren] = lists:reverse(tl(Elements)), case {Head, Last} of - {#xmlstreamstart{name = Name, attrs = Attrs}, #xmlstreamend{name = Name}} -> - Element = #xmlel{name = Name, attrs = Attrs, children = lists:reverse(RevChildren)}, - to_binary_nif(Element, Pretty); - _ -> - [to_iolist(El, Pretty) || El <- Elements] + {#xmlstreamstart{name = Name, attrs = Attrs}, #xmlstreamend{name = Name}} -> + Element = #xmlel{name = Name, attrs = Attrs, children = lists:reverse(RevChildren)}, + to_binary_nif(Element, Pretty); + _ -> + [to_iolist(El, Pretty) || El <- Elements] end; to_iolist(#xmlstreamstart{name = Name, attrs = Attrs}, _Pretty) -> Result = to_binary_nif(#xmlel{name = Name, attrs = Attrs}, not_pretty), @@ -123,9 +123,9 @@ to_iolist(#xmlcdata{content = Content}, _Pretty) -> -spec to_binary_nif(element(), pretty | term()) -> binary(). to_binary_nif(#xmlel{} = Element, Pretty) -> case catch exml_nif:to_binary(Element, Pretty) of - {'EXIT', Reason} -> - erlang:error({badxml, Element, Reason}); - Result when is_binary(Result) -> - Result + {'EXIT', Reason} -> + erlang:error({badxml, Element, Reason}); + Result when is_binary(Result) -> + Result end. diff --git a/src/exml_nif.erl b/src/exml_nif.erl index d895de6..e8e4b2a 100644 --- a/src/exml_nif.erl +++ b/src/exml_nif.erl @@ -24,12 +24,12 @@ -spec load() -> any(). load() -> PrivDir = case code:priv_dir(?MODULE) of - {error, _} -> - EbinDir = filename:dirname(code:which(?MODULE)), - AppPath = filename:dirname(EbinDir), - filename:join(AppPath, "priv"); - Path -> - Path + {error, _} -> + EbinDir = filename:dirname(code:which(?MODULE)), + AppPath = filename:dirname(EbinDir), + filename:join(AppPath, "priv"); + Path -> + Path end, erlang:load_nif(filename:join(PrivDir, ?MODULE_STRING), none). diff --git a/src/exml_query.erl b/src/exml_query.erl index 3c11a4a..70d1148 100644 --- a/src/exml_query.erl +++ b/src/exml_query.erl @@ -28,13 +28,16 @@ {attr, binary()} | element_with_ns() | element_with_name_and_ns() | - element_with_attr_of_value()]. %% selects cdata from the element + element_with_attr_of_value()]. + + %% selects cdata from the element % selects subelement with given name % selects attr of given name % selects subelement with given namespace % selects subelement with given name and namespace + % selects subelement with given attribute and value -export_type([path/0]). @@ -49,7 +52,8 @@ path(Element, Path) -> path(#xmlel{} = Element, [], _) -> Element; path(#xmlel{} = Element, [{element, Name} | Rest], Default) -> - Child = subelement(Element, Name), % may return undefined + Child = subelement(Element, + Name), % may return undefined path(Child, Rest, Default); path(#xmlel{} = Element, [{element_with_ns, NS} | Rest], Default) -> Child = subelement_with_ns(Element, NS), @@ -97,10 +101,10 @@ subelement(Element, Name) -> -spec subelement(exml:element(), binary(), Other) -> exml:element() | Other. subelement(#xmlel{children = Children}, Name, Default) -> case lists:keyfind(Name, #xmlel.name, Children) of - false -> - Default; - Result -> - Result + false -> + Default; + Result -> + Result end. -spec subelement_with_ns(exml:element(), binary()) -> exml:element() | undefined. @@ -115,10 +119,10 @@ child_with_ns([], _, Default) -> Default; child_with_ns([#xmlel{} = Element | Rest], NS, Default) -> case attr(Element, <<"xmlns">>) of - NS -> - Element; - _ -> - child_with_ns(Rest, NS, Default) + NS -> + Element; + _ -> + child_with_ns(Rest, NS, Default) end; child_with_ns([_ | Rest], NS, Default) -> child_with_ns(Rest, NS, Default). @@ -144,10 +148,10 @@ child_with_attr([], _, _, Default) -> Default; child_with_attr([#xmlel{} = Element | Rest], AttrName, AttrVal, Default) -> case attr(Element, AttrName) of - AttrVal -> - Element; - _ -> - child_with_attr(Rest, AttrName, AttrVal, Default) + AttrVal -> + Element; + _ -> + child_with_attr(Rest, AttrName, AttrVal, Default) end; child_with_attr([_ | Rest], AttrName, AttrVal, Default) -> child_with_attr(Rest, AttrName, AttrVal, Default). @@ -163,18 +167,18 @@ subelement_with_name_and_ns(Element, Name, NS) -> Other) -> exml:element() | Other. subelement_with_name_and_ns(Element, Name, NS, Default) -> case subelement(Element, Name, undefined) of - undefined -> - Default; - SubElement -> - subelement_or_default(SubElement, NS, Default) + undefined -> + Default; + SubElement -> + subelement_or_default(SubElement, NS, Default) end. subelement_or_default(SubElement, NS, Default) -> case attr(SubElement, <<"xmlns">>) of - NS -> - SubElement; - _ -> - Default + NS -> + SubElement; + _ -> + Default end. -spec subelements(exml:element(), binary()) -> [exml:element()]. @@ -226,9 +230,9 @@ attr(Element, Name) -> -spec attr(exml:element(), binary(), Other) -> binary() | Other. attr(#xmlel{attrs = Attrs}, Name, Default) -> case lists:keyfind(Name, 1, Attrs) of - {Name, Value} -> - Value; - false -> - Default + {Name, Value} -> + Value; + false -> + Default end. diff --git a/src/exml_stream.erl b/src/exml_stream.erl index 7508047..abd70d1 100644 --- a/src/exml_stream.erl +++ b/src/exml_stream.erl @@ -39,10 +39,10 @@ new_parser(Opts) -> MaxChildSize = proplists:get_value(max_child_size, Opts, 0), InfiniteStream = proplists:get_value(infinite_stream, Opts, false), case exml_nif:create(MaxChildSize, InfiniteStream) of - {ok, EventParser} -> - {ok, #parser{event_parser = EventParser, buffer = []}}; - Error -> - Error + {ok, EventParser} -> + {ok, #parser{event_parser = EventParser, buffer = []}}; + Error -> + Error end. -spec parse(parser(), binary()) -> {ok, parser(), [exml_stream:element()]} | @@ -51,10 +51,10 @@ parse(Parser, Input) when is_binary(Input) -> #parser{event_parser = EventParser, buffer = OldBuf} = Parser, Buffer = OldBuf ++ [Input], case parse_all(EventParser, Buffer, []) of - {ok, Elems, NewBuffer} -> - {ok, Parser#parser{buffer = NewBuffer}, Elems}; - Other -> - Other + {ok, Elems, NewBuffer} -> + {ok, Parser#parser{buffer = NewBuffer}, Elems}; + Other -> + Other end. -spec reset_parser(parser()) -> {ok, parser()}. @@ -75,12 +75,12 @@ parse_all(_Parser, [], Acc) -> parse_all(Parser, Buffer, Acc) -> Val = exml_nif:parse_next(Parser, Buffer), case Val of - {ok, undefined, Offset} -> - {ok, lists:reverse(Acc), drop_offset(Buffer, Offset)}; - {ok, Element, Offset} -> - parse_all(Parser, drop_offset(Buffer, Offset), [Element | Acc]); - {error, _} = Error -> - Error + {ok, undefined, Offset} -> + {ok, lists:reverse(Acc), drop_offset(Buffer, Offset)}; + {ok, Element, Offset} -> + parse_all(Parser, drop_offset(Buffer, Offset), [Element | Acc]); + {error, _} = Error -> + Error end. drop_offset(Buffer, 0) ->