From 446f674f27339ec92a98d78315cbd71e3b6d1151 Mon Sep 17 00:00:00 2001 From: Led Date: Mon, 3 Aug 2015 00:44:49 +0300 Subject: [PATCH] add rebar.config.script for checking support maps and binary_to_{integer,float}/1 --- rebar.config | 2 -- rebar.config.script | 11 +++++++++++ src/jsx_decoder.erl | 3 +-- 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 rebar.config.script diff --git a/rebar.config b/rebar.config index 8152f4d..0dcef82 100644 --- a/rebar.config +++ b/rebar.config @@ -1,7 +1,5 @@ {erl_opts, [ % uncomment to always decode to maps % {d, maps_always}, - {platform_define, "R14|R15", 'no_binary_to_whatever'}, - {platform_define, "^((?!R1[456]).)*$", 'maps_support'} ]}. {edoc_opts, [{preprocess, true}]}. \ No newline at end of file diff --git a/rebar.config.script b/rebar.config.script new file mode 100644 index 0000000..4510155 --- /dev/null +++ b/rebar.config.script @@ -0,0 +1,11 @@ +Def0 = case erlang:is_builtin(erlang, binary_to_integer, 1) andalso + erlang:is_builtin(erlang, binary_to_float, 1) of + true -> []; + false -> [{d, no_binary_to_whatever}] + end, +Defs = case erlang:is_builtin(erlang, is_map, 1) of + true -> [{d, maps_support}|Def0]; + false -> Def0 + end, +lists:keystore(erl_opts, 1, CONFIG, + {erl_opts, proplists:get_value(erl_opts, CONFIG, []) ++ Defs}). diff --git a/src/jsx_decoder.erl b/src/jsx_decoder.erl index 0f03975..5b6d300 100644 --- a/src/jsx_decoder.erl +++ b/src/jsx_decoder.erl @@ -1010,8 +1010,7 @@ finish_number(Rest, Handler, Acc, Stack, Config) -> -ifndef(no_binary_to_whatever). format_number({integer, Acc}) -> {integer, binary_to_integer(Acc)}; format_number({float, Acc}) -> {float, binary_to_float(Acc)}. --endif. --ifdef(no_binary_to_whatever). +-else. format_number({integer, Acc}) -> {integer, list_to_integer(unicode:characters_to_list(Acc))}; format_number({float, Acc}) -> {float, list_to_float(unicode:characters_to_list(Acc))}. -endif.