From d654a0e8827d15f0e2289a157c794e28a1416610 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Mon, 5 Mar 2012 19:53:55 -0800 Subject: [PATCH] lift init methods into decoder/encoder --- src/jsx_decoder.erl | 9 ++++++++- src/jsx_encoder.erl | 8 +++++++- src/jsx_to_json.erl | 4 ++-- src/jsx_to_term.erl | 2 +- src/jsx_verify.erl | 4 ++-- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 38ee72e..c51b9fb 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -29,7 +29,14 @@ -spec decoder(Handler::module(), State::any(), Opts::jsx:opts()) -> jsx:decoder(). decoder(Handler, State, Opts) -> - fun(JSON) -> value(JSON, {Handler, State}, [], jsx_utils:parse_opts(Opts)) end. + fun(JSON) -> + value( + JSON, + {Handler, Handler:init(State)}, + [], + jsx_utils:parse_opts(Opts) + ) + end. diff --git a/src/jsx_encoder.erl b/src/jsx_encoder.erl index 07c18f8..0621811 100644 --- a/src/jsx_encoder.erl +++ b/src/jsx_encoder.erl @@ -29,7 +29,13 @@ -spec encoder(Handler::module(), State::any(), Opts::jsx:opts()) -> jsx:encoder(). encoder(Handler, State, Opts) -> - fun(JSON) -> start(JSON, {Handler, State}, jsx_utils:parse_opts(Opts)) end. + fun(JSON) -> + start( + JSON, + {Handler, Handler:init(State)}, + jsx_utils:parse_opts(Opts) + ) + end. diff --git a/src/jsx_to_json.erl b/src/jsx_to_json.erl index 9c60095..bcba3c6 100644 --- a/src/jsx_to_json.erl +++ b/src/jsx_to_json.erl @@ -39,13 +39,13 @@ -spec to_json(Source::any(), Opts::opts()) -> binary(). to_json(Source, Opts) when is_list(Opts) -> - (jsx:encoder(?MODULE, init(Opts), jsx_utils:extract_opts(Opts)))(Source). + (jsx:encoder(?MODULE, Opts, jsx_utils:extract_opts(Opts)))(Source). -spec format(Source::binary(), Opts::opts()) -> binary(). format(Source, Opts) when is_binary(Source) andalso is_list(Opts) -> - (jsx:decoder(?MODULE, init(Opts), jsx_utils:extract_opts(Opts)))(Source). + (jsx:decoder(?MODULE, Opts, jsx_utils:extract_opts(Opts)))(Source). parse_opts(Opts) -> parse_opts(Opts, #opts{}). diff --git a/src/jsx_to_term.erl b/src/jsx_to_term.erl index 06908f3..3099829 100644 --- a/src/jsx_to_term.erl +++ b/src/jsx_to_term.erl @@ -37,7 +37,7 @@ -spec to_term(Source::(binary() | list()), Opts::opts()) -> binary(). to_term(Source, Opts) when is_list(Opts) -> - (jsx:decoder(?MODULE, init(Opts), jsx_utils:extract_opts(Opts)))(Source). + (jsx:decoder(?MODULE, Opts, jsx_utils:extract_opts(Opts)))(Source). diff --git a/src/jsx_verify.erl b/src/jsx_verify.erl index f087184..55be047 100644 --- a/src/jsx_verify.erl +++ b/src/jsx_verify.erl @@ -37,7 +37,7 @@ -spec is_json(Source::binary(), Opts::opts()) -> true | false. is_json(Source, Opts) when is_list(Opts) -> - try (jsx:decoder(?MODULE, init(Opts), jsx_utils:extract_opts(Opts)))(Source) + try (jsx:decoder(?MODULE, Opts, jsx_utils:extract_opts(Opts)))(Source) catch error:badarg -> false end. @@ -45,7 +45,7 @@ is_json(Source, Opts) when is_list(Opts) -> -spec is_term(Source::any(), Opts::opts()) -> true | false. is_term(Source, Opts) when is_list(Opts) -> - try (jsx:encoder(?MODULE, init(Opts), jsx_utils:extract_opts(Opts)))(Source) + try (jsx:encoder(?MODULE, Opts, jsx_utils:extract_opts(Opts)))(Source) catch error:badarg -> false end.