diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2013-10-24 09:00:06 -0700 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2013-10-24 09:00:06 -0700 |
commit | 23550795f3bd169ad5dc1470864bf88414355491 (patch) | |
tree | 8ec43d7b0d42b3f33fc211cd8fc973757f569645 /lib | |
parent | b084a971f87ad20f4521634aee76d5189c1d9044 (diff) | |
download | ffi-yajl-23550795f3bd169ad5dc1470864bf88414355491.tar.gz |
fix tests
- pretty and indent work now
- strip trailing newline for generated JSON compat output
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ffi_yajl.rb | 12 | ||||
-rw-r--r-- | lib/ffi_yajl/json_gem.rb | 16 |
2 files changed, 17 insertions, 11 deletions
diff --git a/lib/ffi_yajl.rb b/lib/ffi_yajl.rb index 4b7bd61..696508d 100644 --- a/lib/ffi_yajl.rb +++ b/lib/ffi_yajl.rb @@ -77,7 +77,7 @@ module FFI_Yajl # attach_function :yajl_config, [:yajl_handle, :yajl_option, :int], :int - attach_function :yajl_gen_config, [:yajl_gen, :yajl_gen_option, :int], :int + attach_function :yajl_gen_config, [:yajl_gen, :yajl_gen_option, :varargs], :int # yajl_gen yajl_gen_alloc (const yajl_gen_config *config, const yajl_alloc_funcs *allocFuncs) attach_function :yajl_gen_alloc, [:pointer, :pointer], :yajl_gen @@ -220,8 +220,14 @@ module FFI_Yajl class Encoder def self.encode(obj, opts) yajl_gen = FFI_Yajl.yajl_gen_alloc(nil, nil) - FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_beautify, 1); - FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_validate_utf8, 1); + FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_beautify, :int, 1) if opts[:pretty] + FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_validate_utf8, :int, 1) + indent = if opts[:pretty] + opts[:indent] ? opts[:indent] : " " + else + " " + end + FFI_Yajl.yajl_gen_config(yajl_gen, :yajl_gen_indent_string, :string, indent) encode_part(obj, yajl_gen) string_ptr = FFI::MemoryPointer.new(:string) length_ptr = FFI::MemoryPointer.new(:int) diff --git a/lib/ffi_yajl/json_gem.rb b/lib/ffi_yajl/json_gem.rb index 6e43cd6..be9f2c6 100644 --- a/lib/ffi_yajl/json_gem.rb +++ b/lib/ffi_yajl/json_gem.rb @@ -17,12 +17,12 @@ module JSON class ParserError < JSONError; end unless defined?(JSON::ParserError) def self.generate(obj, opts=nil) - #opts ||= {} + opts ||= {} options_map = {} - #if opts.has_key?(:indent) - # options_map[:pretty] = true - # options_map[:indent] = opts[:indent] - #end + if opts.has_key?(:indent) + options_map[:pretty] = true + options_map[:indent] = opts[:indent] + end FFI_Yajl::Encoder.encode(obj, options_map) rescue FFI_Yajl::EncodeError => e raise JSON::GeneratorError, e.message @@ -30,9 +30,9 @@ module JSON def self.pretty_generate(obj, opts={}) options_map = {} - #options_map[:pretty] = true - #options_map[:indent] = opts[:indent] if opts.has_key?(:indent) - FFI_Yajl::Encoder.encode(obj, options_map) + options_map[:pretty] = true + options_map[:indent] = opts[:indent] if opts.has_key?(:indent) + FFI_Yajl::Encoder.encode(obj, options_map).chomp rescue FFI_Yajl::EncodeError => e raise JSON::GeneratorError, e.message end |