From 317d757b45d95017b2d14e80a5275abba2b0621c Mon Sep 17 00:00:00 2001 From: alisdair sullivan Date: Thu, 12 Aug 2010 21:32:03 -0700 Subject: [PATCH] minor api change, More(end_stream) is now a badarg exception in any case except the ambiguous number --- priv/jsx_decoder_template.erl | 4 ++-- src/jsx_utf16.erl | 33 +++++++++++++++++---------------- src/jsx_utf16le.erl | 33 +++++++++++++++++---------------- src/jsx_utf32.erl | 33 +++++++++++++++++---------------- src/jsx_utf32le.erl | 33 +++++++++++++++++---------------- src/jsx_utf8.erl | 33 +++++++++++++++++---------------- 6 files changed, 87 insertions(+), 82 deletions(-) diff --git a/priv/jsx_decoder_template.erl b/priv/jsx_decoder_template.erl index 839f00d..c12efaf 100644 --- a/priv/jsx_decoder_template.erl +++ b/priv/jsx_decoder_template.erl @@ -36,7 +36,7 @@ --spec parse(JSON::json(), Opts::jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON::eep0018(), Opts::jsx_opts()) -> jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -97,7 +97,7 @@ done(<>, Opts) when ?is_whitespace(S) -> done(<>, ?comments_enabled(Opts)) -> maybe_comment(Rest, fun(Resume) -> done(Resume, Opts) end); done(<<>>, Opts) -> - {event, end_json, fun() -> {incomplete, fun(end_stream) -> done(<<>>, Opts); (Stream) -> done(Stream, Opts) end} end}; + {event, end_json, fun() -> {incomplete, fun(end_stream) -> {error, badjson}; (Stream) -> done(Stream, Opts) end} end}; done(Bin, Opts) -> case ?partial_codepoint(Bin) of true -> {incomplete, fun(end_stream) -> {error, badjson}; (Stream) -> done(<>, Opts) end} diff --git a/src/jsx_utf16.erl b/src/jsx_utf16.erl index e79697d..b0ec461 100644 --- a/src/jsx_utf16.erl +++ b/src/jsx_utf16.erl @@ -51,25 +51,25 @@ | {error, badjson} | ok. --type json() :: json_object() | json_array(). +-type eep0018() :: eep0018_object() | eep0018_array(). --type json_array() :: [json_term()]. +-type eep0018_array() :: [eep0018_term()]. --type json_object() :: [{json_key(), json_term()}]. +-type eep0018_object() :: [{eep0018_key(), eep0018_term()}]. --type json_key() :: binary() | atom(). +-type eep0018_key() :: binary() | atom(). --type json_term() :: json_array() - | json_object() - | json_string() - | json_number() - | true - | false - | null. +-type eep0018_term() :: eep0018_array() + | eep0018_object() + | eep0018_string() + | eep0018_number() + | true + | false + | null. --type json_string() :: binary(). +-type eep0018_string() :: binary(). --type json_number() :: float() | integer(). +-type eep0018_number() :: float() | integer(). -type supported_utf() :: utf8 | utf16 @@ -80,7 +80,7 @@ -type encoder_opts() :: [encoder_opt()]. -type encoder_opt() :: {strict, true | false} - | {encoding, auto | supported_utf()} + | {encoding, supported_utf()} | {space, integer()} | space | {indent, integer()} @@ -113,7 +113,8 @@ -file("priv/jsx_decoder_template.erl", 36). --spec parse(JSON :: json(), Opts :: jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON :: eep0018(), Opts :: jsx_opts()) -> + jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -230,7 +231,7 @@ done(<<>>, Opts) -> fun() -> {incomplete, fun(end_stream) -> - done(<<>>, Opts); + {error,badjson}; (Stream) -> done(Stream, Opts) end} diff --git a/src/jsx_utf16le.erl b/src/jsx_utf16le.erl index 938fe8a..88be8f5 100644 --- a/src/jsx_utf16le.erl +++ b/src/jsx_utf16le.erl @@ -51,25 +51,25 @@ | {error, badjson} | ok. --type json() :: json_object() | json_array(). +-type eep0018() :: eep0018_object() | eep0018_array(). --type json_array() :: [json_term()]. +-type eep0018_array() :: [eep0018_term()]. --type json_object() :: [{json_key(), json_term()}]. +-type eep0018_object() :: [{eep0018_key(), eep0018_term()}]. --type json_key() :: binary() | atom(). +-type eep0018_key() :: binary() | atom(). --type json_term() :: json_array() - | json_object() - | json_string() - | json_number() - | true - | false - | null. +-type eep0018_term() :: eep0018_array() + | eep0018_object() + | eep0018_string() + | eep0018_number() + | true + | false + | null. --type json_string() :: binary(). +-type eep0018_string() :: binary(). --type json_number() :: float() | integer(). +-type eep0018_number() :: float() | integer(). -type supported_utf() :: utf8 | utf16 @@ -80,7 +80,7 @@ -type encoder_opts() :: [encoder_opt()]. -type encoder_opt() :: {strict, true | false} - | {encoding, auto | supported_utf()} + | {encoding, supported_utf()} | {space, integer()} | space | {indent, integer()} @@ -113,7 +113,8 @@ -file("priv/jsx_decoder_template.erl", 36). --spec parse(JSON :: json(), Opts :: jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON :: eep0018(), Opts :: jsx_opts()) -> + jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -232,7 +233,7 @@ done(<<>>, Opts) -> fun() -> {incomplete, fun(end_stream) -> - done(<<>>, Opts); + {error,badjson}; (Stream) -> done(Stream, Opts) end} diff --git a/src/jsx_utf32.erl b/src/jsx_utf32.erl index 8cd573f..a665034 100644 --- a/src/jsx_utf32.erl +++ b/src/jsx_utf32.erl @@ -51,25 +51,25 @@ | {error, badjson} | ok. --type json() :: json_object() | json_array(). +-type eep0018() :: eep0018_object() | eep0018_array(). --type json_array() :: [json_term()]. +-type eep0018_array() :: [eep0018_term()]. --type json_object() :: [{json_key(), json_term()}]. +-type eep0018_object() :: [{eep0018_key(), eep0018_term()}]. --type json_key() :: binary() | atom(). +-type eep0018_key() :: binary() | atom(). --type json_term() :: json_array() - | json_object() - | json_string() - | json_number() - | true - | false - | null. +-type eep0018_term() :: eep0018_array() + | eep0018_object() + | eep0018_string() + | eep0018_number() + | true + | false + | null. --type json_string() :: binary(). +-type eep0018_string() :: binary(). --type json_number() :: float() | integer(). +-type eep0018_number() :: float() | integer(). -type supported_utf() :: utf8 | utf16 @@ -80,7 +80,7 @@ -type encoder_opts() :: [encoder_opt()]. -type encoder_opt() :: {strict, true | false} - | {encoding, auto | supported_utf()} + | {encoding, supported_utf()} | {space, integer()} | space | {indent, integer()} @@ -113,7 +113,8 @@ -file("priv/jsx_decoder_template.erl", 36). --spec parse(JSON :: json(), Opts :: jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON :: eep0018(), Opts :: jsx_opts()) -> + jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -230,7 +231,7 @@ done(<<>>, Opts) -> fun() -> {incomplete, fun(end_stream) -> - done(<<>>, Opts); + {error,badjson}; (Stream) -> done(Stream, Opts) end} diff --git a/src/jsx_utf32le.erl b/src/jsx_utf32le.erl index 07db008..f258810 100644 --- a/src/jsx_utf32le.erl +++ b/src/jsx_utf32le.erl @@ -51,25 +51,25 @@ | {error, badjson} | ok. --type json() :: json_object() | json_array(). +-type eep0018() :: eep0018_object() | eep0018_array(). --type json_array() :: [json_term()]. +-type eep0018_array() :: [eep0018_term()]. --type json_object() :: [{json_key(), json_term()}]. +-type eep0018_object() :: [{eep0018_key(), eep0018_term()}]. --type json_key() :: binary() | atom(). +-type eep0018_key() :: binary() | atom(). --type json_term() :: json_array() - | json_object() - | json_string() - | json_number() - | true - | false - | null. +-type eep0018_term() :: eep0018_array() + | eep0018_object() + | eep0018_string() + | eep0018_number() + | true + | false + | null. --type json_string() :: binary(). +-type eep0018_string() :: binary(). --type json_number() :: float() | integer(). +-type eep0018_number() :: float() | integer(). -type supported_utf() :: utf8 | utf16 @@ -80,7 +80,7 @@ -type encoder_opts() :: [encoder_opt()]. -type encoder_opt() :: {strict, true | false} - | {encoding, auto | supported_utf()} + | {encoding, supported_utf()} | {space, integer()} | space | {indent, integer()} @@ -113,7 +113,8 @@ -file("priv/jsx_decoder_template.erl", 36). --spec parse(JSON :: json(), Opts :: jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON :: eep0018(), Opts :: jsx_opts()) -> + jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -232,7 +233,7 @@ done(<<>>, Opts) -> fun() -> {incomplete, fun(end_stream) -> - done(<<>>, Opts); + {error,badjson}; (Stream) -> done(Stream, Opts) end} diff --git a/src/jsx_utf8.erl b/src/jsx_utf8.erl index 9b6bf58..7e8f1a1 100644 --- a/src/jsx_utf8.erl +++ b/src/jsx_utf8.erl @@ -51,25 +51,25 @@ | {error, badjson} | ok. --type json() :: json_object() | json_array(). +-type eep0018() :: eep0018_object() | eep0018_array(). --type json_array() :: [json_term()]. +-type eep0018_array() :: [eep0018_term()]. --type json_object() :: [{json_key(), json_term()}]. +-type eep0018_object() :: [{eep0018_key(), eep0018_term()}]. --type json_key() :: binary() | atom(). +-type eep0018_key() :: binary() | atom(). --type json_term() :: json_array() - | json_object() - | json_string() - | json_number() - | true - | false - | null. +-type eep0018_term() :: eep0018_array() + | eep0018_object() + | eep0018_string() + | eep0018_number() + | true + | false + | null. --type json_string() :: binary(). +-type eep0018_string() :: binary(). --type json_number() :: float() | integer(). +-type eep0018_number() :: float() | integer(). -type supported_utf() :: utf8 | utf16 @@ -80,7 +80,7 @@ -type encoder_opts() :: [encoder_opt()]. -type encoder_opt() :: {strict, true | false} - | {encoding, auto | supported_utf()} + | {encoding, supported_utf()} | {space, integer()} | space | {indent, integer()} @@ -113,7 +113,8 @@ -file("priv/jsx_decoder_template.erl", 36). --spec parse(JSON :: json(), Opts :: jsx_opts()) -> jsx_parser_result(). +-spec parse(JSON :: eep0018(), Opts :: jsx_opts()) -> + jsx_parser_result(). parse(JSON, Opts) -> start(JSON, [], Opts). @@ -230,7 +231,7 @@ done(<<>>, Opts) -> fun() -> {incomplete, fun(end_stream) -> - done(<<>>, Opts); + {error,badjson}; (Stream) -> done(Stream, Opts) end}