Skip to content

Commit

Permalink
Add support for binary keys in proplist->object conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
yrashk committed Sep 8, 2011
1 parent d5b2ee6 commit 906f10c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
6 changes: 6 additions & 0 deletions c_src/erlv8_term.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ int enif_is_proplist(ErlNifEnv * env, ERL_NIF_TERM term)
ERL_NIF_TERM current = term;
int arity;
ERL_NIF_TERM *array;
ErlNifBinary string_binary;

if (!enif_is_list(env,term)) {
return 0;
}
Expand All @@ -23,6 +25,9 @@ int enif_is_proplist(ErlNifEnv * env, ERL_NIF_TERM term)
}
free(str);
} else if (!enif_is_atom(env, array[0])) {
if (enif_inspect_iolist_as_binary(env, array[0], &string_binary)) { // string
return 1;
}
return 0;
}

Expand All @@ -34,6 +39,7 @@ int enif_is_proplist(ErlNifEnv * env, ERL_NIF_TERM term)
v8::PropertyAttribute term_to_property_attribute(ErlNifEnv * env, ERL_NIF_TERM term) {
unsigned len;
char name[MAX_ATOM_LEN];

if (enif_is_atom(env, term)) {
v8::PropertyAttribute property_attribute;
enif_get_atom_length(env, term, &len, ERL_NIF_LATIN1);
Expand Down
4 changes: 2 additions & 2 deletions src/erlv8.erl
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ term_to_js_iolist_test() ->
term_to_js_object_test() ->
start(),
{ok, VM} = erlv8_vm:start(),
Obj = erlv8_vm:taint(VM,?V8Obj([{"a",1},{"b","c"}])),
?assertMatch([{<<"a">>,1},{<<"b">>,<<"c">>}],Obj:proplist()),
Obj = erlv8_vm:taint(VM,?V8Obj([{"a",1},{"b","c"},{<<"c">>,<<"d">>}])),
?assertMatch([{<<"a">>,1},{<<"b">>,<<"c">>},{<<"c">>,<<"d">>}],Obj:proplist()),
stop().

term_to_js_boolean_test() ->
Expand Down

0 comments on commit 906f10c

Please sign in to comment.