refactors out extraction of parser opts, generalizes use of specific parsers by processors

This commit is contained in:
alisdair sullivan 2011-11-29 19:39:01 -08:00
parent 55d0259c89
commit 6dacf64620
7 changed files with 57 additions and 80 deletions

View file

@ -33,6 +33,14 @@ behaviour_info(_) -> undefined.
parser(Mod, Args) -> parser(Mod, Args, []).
parser(Mod, Args, Opts) -> fun(Input) when is_list(Input) -> (jsx:encoder(Mod, Args, Opts))(Input)
; (Input) when is_binary(Input) -> (jsx:decoder(Mod, Args, Opts))(Input)
parser(Mod, Args, Opts) when is_atom(Mod), is_list(Opts) ->
case proplists:get_value(parser, Opts, auto) of
auto ->
fun(Input) when is_list(Input) -> (jsx:encoder(Mod, Args, Opts))(Input)
; (Input) when is_binary(Input) -> (jsx:decoder(Mod, Args, Opts))(Input)
end
; encoder ->
fun(Input) -> (jsx:encoder(Mod, Args, Opts))(Input) end
; decoder ->
fun(Input) -> (jsx:decoder(Mod, Args, Opts))(Input) end
end.