summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2015-04-17 13:29:07 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2015-04-17 13:46:43 -0700
commit77157d2199376d9e63d6285eedd66e047e856b97 (patch)
treee0bdd30615c8a15b404d2b5666f1cf1f8dc41cc1
parente44c8cc492eac92f765514e2acfa1666981b221a (diff)
downloadffi-yajl-77157d2199376d9e63d6285eedd66e047e856b97.tar.gz
fix ffi side
-rw-r--r--lib/ffi_yajl/ffi/encoder.rb9
-rw-r--r--spec/ffi_yajl/encoder_spec.rb2
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/ffi_yajl/ffi/encoder.rb b/lib/ffi_yajl/ffi/encoder.rb
index 6e168fe..73a0d11 100644
--- a/lib/ffi_yajl/ffi/encoder.rb
+++ b/lib/ffi_yajl/ffi/encoder.rb
@@ -227,6 +227,15 @@ class String
end
end
+class StringIO
+ def ffi_yajl(yajl_gen, state)
+ str = self.read
+ if ( status = FFI_Yajl.yajl_gen_string(yajl_gen, str, str.bytesize) ) != 0
+ FFI_Yajl::Encoder.raise_error_for_status(status)
+ end
+ end
+end
+
class Date
def ffi_yajl(yajl_gen, state)
str = self.to_s
diff --git a/spec/ffi_yajl/encoder_spec.rb b/spec/ffi_yajl/encoder_spec.rb
index 6fbff9a..0eef23d 100644
--- a/spec/ffi_yajl/encoder_spec.rb
+++ b/spec/ffi_yajl/encoder_spec.rb
@@ -133,7 +133,7 @@ describe "FFI_Yajl::Encoder" do
it "can encode StringIOs" do
ruby = { "foo" => StringIO.new('THING') }
- expect(encoder.encode(ruby)).to eq(nil)
+ expect(encoder.encode(ruby)).to eq("{\"foo\":\"THING\"}")
end
context "when encoding Time objects in UTC timezone" do