minor api change and refactoring of pretty_printer.erl

This commit is contained in:
alisdair sullivan 2010-05-25 13:31:41 -07:00
parent 6662a1ee98
commit 5d014bbef8
6 changed files with 58 additions and 43 deletions

View file

@ -1,11 +1,9 @@
-module(jsx).
-export([decoder/0, decoder/2, decode/3]).
-export([decoder/0, decoder/2, tail_clean/1]).
-include("jsx_common.hrl").
decode(JSON, Callbacks, Opts) ->
(decoder(Callbacks, Opts))(JSON).
decoder() ->
decoder(none, []).
@ -43,8 +41,14 @@ parse_opts([{explicit_termination, Value}|Rest], Opts) ->
init_callbacks(none) ->
{none, []};
init_callbacks({M, S}) when is_atom(M) ->
{M, S};
init_callbacks({{M, F}, S}) when is_atom(M), is_atom(F) ->
{{M, F}, S};
init_callbacks({F, S}) when is_function(F) ->
{F, S}.
tail_clean(<<X/utf8, Rest/binary>>) when ?is_whitespace(X) ->
tail_clean(Rest);
tail_clean(<<>>) ->
true;
tail_clean(_) ->
false.

View file

@ -433,8 +433,8 @@ callback(eof, {none, Callbacks}) ->
lists:reverse(Callbacks);
callback(Event, {none, Callbacks}) ->
{none, [Event] ++ Callbacks};
callback(Event, {Mod, State}) when is_atom(Mod) ->
{Mod, Mod:jsx_event(Event, State)};
callback(Event, {{Mod, Function}, State}) when is_atom(Mod) ->
{{Mod, Function}, Mod:Function(Event, State)};
callback(Event, {F, State}) when is_function(F) ->
{F, F(Event, State)}.