summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2014-06-13 19:04:30 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2014-06-13 19:04:30 -0700
commita10bf94c402dcc5a6397567ec3811e6c305527f5 (patch)
treee84494be22a9065d02ca537758423c7d45b3675d /lib
parentc0fb725f9a1be57086c42a0ba15365585b89d112 (diff)
downloadffi-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.rb2
-rw-r--r--lib/ffi_yajl/json_gem.rb3
-rw-r--r--lib/ffi_yajl/parser.rb4
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)