rename 'sloppy_existing_atom' to 'attempt_atom'

This commit is contained in:
alisdair sullivan 2013-07-05 03:11:01 +00:00
parent 5dd62e27b5
commit fe2bd15184
2 changed files with 11 additions and 10 deletions

View file

@ -467,7 +467,7 @@ decode(JSON, Opts) -> Term
JSON = json_text() JSON = json_text()
Term = json_term() Term = json_term()
Opts = [option() | labels | {labels, Label} | {post_decode, F}] Opts = [option() | labels | {labels, Label} | {post_decode, F}]
Label = binary | atom | existing_atom | sloppy_existing_atom Label = binary | atom | existing_atom | attempt_atom
F = fun((any()) -> any()) F = fun((any()) -> any())
``` ```
@ -477,10 +477,11 @@ term
the option `labels` controls how keys are converted from json to the option `labels` controls how keys are converted from json to
erlang terms. `binary` (the default behavior) does no conversion erlang terms. `binary` (the default behavior) does no conversion
beyond normal escaping. `atom` converts keys to erlang atoms and beyond normal escaping. `atom` converts keys to erlang atoms and
results in a badarg error if the keys fall outside the range of erlang results in a `badarg` error if the keys fall outside the range of erlang
atoms. `existing_atom` is identical to `atom` except it will not add atoms. `existing_atom` is identical to `atom` except it will not add
new atoms to the atom table. `sloppy_existing_atom` will convert keys new atoms to the atom table and will result in a `badarg` error if the atom
to atoms when they exist, and leave them as binary otherwise does not exist. `attempt_atom` will convert keys to atoms when they exist,
and leave them as binary otherwise
`{post_decode, F}` is a user defined function of arity 1 that is called on each `{post_decode, F}` is a user defined function of arity 1 that is called on each
output value (objects, arrays, strings, numbers and literals). it may return any output value (objects, arrays, strings, numbers and literals). it may return any

View file

@ -53,7 +53,7 @@ to_term(Source, Config) when is_list(Config) ->
parse_config(Config) -> parse_config(Config, #config{}). parse_config(Config) -> parse_config(Config, #config{}).
parse_config([{labels, Val}|Rest], Config) parse_config([{labels, Val}|Rest], Config)
when Val == binary; Val == atom; Val == existing_atom; Val == sloppy_existing_atom -> when Val == binary; Val == atom; Val == existing_atom; Val == attempt_atom ->
parse_config(Rest, Config#config{labels = Val}); parse_config(Rest, Config#config{labels = Val});
parse_config([labels|Rest], Config) -> parse_config([labels|Rest], Config) ->
parse_config(Rest, Config#config{labels = binary}); parse_config(Rest, Config#config{labels = binary});
@ -107,7 +107,7 @@ format_key(Key, Config) ->
binary -> Key binary -> Key
; atom -> binary_to_atom(Key, utf8) ; atom -> binary_to_atom(Key, utf8)
; existing_atom -> binary_to_existing_atom(Key, utf8) ; existing_atom -> binary_to_existing_atom(Key, utf8)
; sloppy_existing_atom -> ; attempt_atom ->
try binary_to_existing_atom(Key, utf8) of try binary_to_existing_atom(Key, utf8) of
Result -> Result Result -> Result
catch catch
@ -140,8 +140,8 @@ config_test_() ->
parse_config([{labels, existing_atom}]) parse_config([{labels, existing_atom}])
)}, )},
{"sloppy existing atom labels", ?_assertEqual( {"sloppy existing atom labels", ?_assertEqual(
#config{labels=sloppy_existing_atom}, #config{labels=attempt_atom},
parse_config([{labels, sloppy_existing_atom}]) parse_config([{labels, attempt_atom}])
)}, )},
{"post decode", ?_assertEqual( {"post decode", ?_assertEqual(
#config{post_decode=F}, #config{post_decode=F},
@ -167,11 +167,11 @@ format_key_test_() ->
)}, )},
{"sloppy existing atom key", ?_assertEqual( {"sloppy existing atom key", ?_assertEqual(
key, key,
format_key(<<"key">>, #config{labels=sloppy_existing_atom}) format_key(<<"key">>, #config{labels=attempt_atom})
)}, )},
{"nonexisting atom key", ?_assertEqual( {"nonexisting atom key", ?_assertEqual(
<<"nonexistentatom">>, <<"nonexistentatom">>,
format_key(<<"nonexistentatom">>, #config{labels=sloppy_existing_atom}) format_key(<<"nonexistentatom">>, #config{labels=attempt_atom})
)} )}
]. ].