summaryrefslogtreecommitdiff
path: root/lib/ffi_yajl.rb
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/ffi_yajl.rb
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/ffi_yajl.rb')
-rw-r--r--lib/ffi_yajl.rb12
1 files changed, 9 insertions, 3 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)