summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2013-10-24 09:00:06 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2013-10-24 09:00:06 -0700
commit23550795f3bd169ad5dc1470864bf88414355491 (patch)
tree8ec43d7b0d42b3f33fc211cd8fc973757f569645 /lib
parentb084a971f87ad20f4521634aee76d5189c1d9044 (diff)
downloadffi-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.rb12
-rw-r--r--lib/ffi_yajl/json_gem.rb16
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