From e145220d92057f0743efcad5f80df19f39c103e1 Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Wed, 14 Dec 2011 20:57:17 -0800 Subject: [PATCH] move handling of anonymous handlers to gen_json --- src/gen_json.erl | 15 +++++++++++++-- src/jsx_utils.erl | 7 ------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/gen_json.erl b/src/gen_json.erl index e508f09..f9d9399 100644 --- a/src/gen_json.erl +++ b/src/gen_json.erl @@ -24,13 +24,18 @@ -module(gen_json). -export([behaviour_info/1]). --export([parser/2, parser/3]). +-export([parser/1, parser/2, parser/3]). +-export([handle_event/2, init/1]). behaviour_info(callbacks) -> [{init, 0}, {handle_event, 2}]; behaviour_info(_) -> undefined. +parser(F) -> parser(F, []). + +parser(F, Opts) when is_function(F, 1) -> parser(?MODULE, {F, undefined}, Opts); +parser({F, State}, Opts) when is_function(F, 2) -> parser(?MODULE, {F, State}, Opts); parser(Mod, Args) -> parser(Mod, Args, []). parser(Mod, Args, Opts) when is_atom(Mod), is_list(Opts) -> @@ -43,4 +48,10 @@ parser(Mod, Args, Opts) when is_atom(Mod), is_list(Opts) -> fun(Input) -> (jsx:encoder(Mod, Args, Opts))(Input) end ; decoder -> fun(Input) -> (jsx:decoder(Mod, Args, Opts))(Input) end - end. \ No newline at end of file + end. + + +handle_event(Event, {F, undefined}) -> F(Event), {F, undefined}; +handle_event(Event, {F, State}) -> {F, F(Event, State)}. + +init(State) -> State. \ No newline at end of file diff --git a/src/jsx_utils.erl b/src/jsx_utils.erl index f30c104..ce9fb33 100644 --- a/src/jsx_utils.erl +++ b/src/jsx_utils.erl @@ -26,7 +26,6 @@ -export([parse_opts/1, extract_opts/1]). -export([nice_decimal/1]). -export([json_escape/2]). --export([handle_event/2, init/1]). -include("../include/jsx_opts.hrl"). @@ -267,12 +266,6 @@ to_hex(X) -> X + 48. %% ascii "1" is [49], "2" is [50], etc... -handle_event(Event, {F, undefined}) -> F(Event), {F, undefined}; -handle_event(Event, {F, State}) -> {F, F(Event, State)}. - -init(State) -> State. - - %% eunit tests -ifdef(TEST). -include_lib("eunit/include/eunit.hrl").