diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 13:29:05 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-14 13:29:05 -0700 |
commit | 31c6704a67038fd85b1e70e5f72f1b82626f9f2a (patch) | |
tree | 6c6de90489c45b1c6e9f015c387dd6c3af888681 /lib | |
parent | c10a3f55c025e21303e642e64bc3654607554c02 (diff) | |
download | ffi-yajl-31c6704a67038fd85b1e70e5f72f1b82626f9f2a.tar.gz |
implementing allow_comments in ffi
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ffi.rb | 2 | ||||
-rw-r--r-- | lib/ffi_yajl/ffi/parser.rb | 8 | ||||
-rw-r--r-- | lib/ffi_yajl/parser.rb | 2 |
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/ffi_yajl/ffi.rb b/lib/ffi_yajl/ffi.rb index 8a84345..1510bcc 100644 --- a/lib/ffi_yajl/ffi.rb +++ b/lib/ffi_yajl/ffi.rb @@ -87,7 +87,7 @@ module FFI_Yajl attach_function :yajl_free_error, [:yajl_handle, :ustring], :void # - attach_function :yajl_config, [:yajl_handle, :yajl_option, :int], :int + attach_function :yajl_config, [:yajl_handle, :yajl_option, :varargs], :int attach_function :yajl_gen_config, [:yajl_gen, :yajl_gen_option, :varargs], :int diff --git a/lib/ffi_yajl/ffi/parser.rb b/lib/ffi_yajl/ffi/parser.rb index e557905..cc454f0 100644 --- a/lib/ffi_yajl/ffi/parser.rb +++ b/lib/ffi_yajl/ffi/parser.rb @@ -94,7 +94,7 @@ module FFI_Yajl end - def do_yajl_parse(str, opts = {}) + def do_yajl_parse(str, yajl_opts = {}) setup_callbacks callback_ptr = ::FFI::MemoryPointer.new(::FFI_Yajl::YajlCallbacks) callbacks = ::FFI_Yajl::YajlCallbacks.new(callback_ptr) @@ -110,6 +110,12 @@ module FFI_Yajl callbacks[:yajl_start_array] = @start_array_callback callbacks[:yajl_end_array] = @end_array_callback yajl_handle = ::FFI_Yajl.yajl_alloc(callback_ptr, nil, nil) + + # configure the yajl parser + if yajl_opts[:yajl_allow_comments] + ::FFI_Yajl.yajl_config(yajl_handle, :yajl_allow_comments, :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? error = ::FFI_Yajl.yajl_get_error(yajl_handle, 1, str, str.bytesize) diff --git a/lib/ffi_yajl/parser.rb b/lib/ffi_yajl/parser.rb index ce6ee89..f1b9625 100644 --- a/lib/ffi_yajl/parser.rb +++ b/lib/ffi_yajl/parser.rb @@ -34,6 +34,8 @@ module FFI_Yajl # initialization that we can do in pure ruby yajl_opts = {} + yajl_opts[:yajl_allow_comments] = @opts[:allow_comments] + # XXX: bug-compat with ruby-yajl return nil if str == "" |