diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-13 19:04:30 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2014-06-13 19:04:30 -0700 |
commit | a10bf94c402dcc5a6397567ec3811e6c305527f5 (patch) | |
tree | e84494be22a9065d02ca537758423c7d45b3675d /lib | |
parent | c0fb725f9a1be57086c42a0ba15365585b89d112 (diff) | |
download | ffi-yajl-a10bf94c402dcc5a6397567ec3811e6c305527f5.tar.gz |
implement symbolize_keys/names for FFI
disable some unimplemented specs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl/ffi/parser.rb | 2 | ||||
-rw-r--r-- | lib/ffi_yajl/json_gem.rb | 3 | ||||
-rw-r--r-- | lib/ffi_yajl/parser.rb | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/lib/ffi_yajl/ffi/parser.rb b/lib/ffi_yajl/ffi/parser.rb index 2e21627..e557905 100644 --- a/lib/ffi_yajl/ffi/parser.rb +++ b/lib/ffi_yajl/ffi/parser.rb @@ -73,7 +73,7 @@ module FFI_Yajl @map_key_callback = ::FFI::Function.new(:int, [:pointer, :string, :size_t]) do |ctx, key, keylen| s = key.slice(0,keylen) s.force_encoding('UTF-8') if defined? Encoding - self.key = s + self.key = @opts[:symbolize_keys] ? s.to_sym : s 1 end @end_map_callback = ::FFI::Function.new(:int, [:pointer]) do |ctx| diff --git a/lib/ffi_yajl/json_gem.rb b/lib/ffi_yajl/json_gem.rb index f46f6e5..0e64d50 100644 --- a/lib/ffi_yajl/json_gem.rb +++ b/lib/ffi_yajl/json_gem.rb @@ -37,8 +37,7 @@ module JSON end def self.default_options - #@default_options ||= {:symbolize_keys => false} - @default_options ||= {} + @default_options ||= {:symbolize_keys => false} end def self.parse(str, opts=JSON.default_options) diff --git a/lib/ffi_yajl/parser.rb b/lib/ffi_yajl/parser.rb index 6465106..ce6ee89 100644 --- a/lib/ffi_yajl/parser.rb +++ b/lib/ffi_yajl/parser.rb @@ -25,7 +25,9 @@ module FFI_Yajl end def initialize(opts = {}) - @opts = opts + @opts = opts ? opts.dup : {} + # JSON gem uses 'symbolize_names' and ruby-yajl supports this as well + @opts[:symbolize_keys] = true if @opts[:symbolize_names] end def parse(str) |