diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 16:50:46 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 16:50:46 -0700 |
commit | 8f640b6d665926c6687d6138c8f6485b43c3a857 (patch) | |
tree | 1d5046f068b8bcbb19b839b61ba5d3b357302e5a /lib | |
parent | 4d056c20768cb8e5a8169ee5d6bf46fc82e19f19 (diff) | |
download | ffi-yajl-8f640b6d665926c6687d6138c8f6485b43c3a857.tar.gz |
support yajl parser options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ffi/parser.rb | 12 | ||||
-rw-r--r-- | lib/ffi_yajl/parser.rb | 13 |
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/ffi_yajl/ffi/parser.rb b/lib/ffi_yajl/ffi/parser.rb index cc454f0..7c1dbbc 100644 --- a/lib/ffi_yajl/ffi/parser.rb +++ b/lib/ffi_yajl/ffi/parser.rb @@ -115,6 +115,18 @@ module FFI_Yajl if yajl_opts[:yajl_allow_comments] ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_comments, :int, 1) end + if yajl_opts[:yajl_dont_validate_strings] + ::FFI_Yajl.yajl_config(yajl_handle, :yajl_dont_validate_strings, :int, 1) + end + if yajl_opts[:yajl_allow_trailing_garbage] + ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_trailing_garbage, :int, 1) + end + if yajl_opts[:yajl_allow_multiple_values] + ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_multiple_values, :int, 1) + end + if yajl_opts[:yajl_allow_partial_values] + ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_partial_values, :int, 1) + end if ( stat = ::FFI_Yajl.yajl_parse(yajl_handle, str, str.bytesize) != :yajl_status_ok ) # FIXME: dup the error and call yajl_free_error? diff --git a/lib/ffi_yajl/parser.rb b/lib/ffi_yajl/parser.rb index f1b9625..0f44477 100644 --- a/lib/ffi_yajl/parser.rb +++ b/lib/ffi_yajl/parser.rb @@ -34,7 +34,18 @@ module FFI_Yajl # initialization that we can do in pure ruby yajl_opts = {} - yajl_opts[:yajl_allow_comments] = @opts[:allow_comments] + if @opts[:check_utf8] == false && @opts[:dont_validate_strings] == false + raise ArgumentError, "options check_utf8 and dont_validate_strings are both false which conflict" + end + if @opts[:check_utf8] == true && @opts[:dont_validate_strings] == true + raise ArgumentError, "options check_utf8 and dont_validate_strings are both true which conflict" + end + + yajl_opts[:yajl_allow_comments] = @opts[:allow_comments] + yajl_opts[:yajl_dont_validate_strings] = (@opts[:check_utf8] == false || @opts[:dont_validate_strings]) + yajl_opts[:yajl_allow_trailing_garbage] = @opts[:allow_trailing_garbage] + yajl_opts[:yajl_allow_multiple_values] = @opts[:allow_multiple_values] + yajl_opts[:yajl_allow_partial_values] = @opts[:allow_partial_values] # XXX: bug-compat with ruby-yajl return nil if str == "" |