/Users/jwebb/src/bigjason/elster/lib/elster/streamer.rb in elster-0.0.2 vs /Users/jwebb/src/bigjason/elster/lib/elster/streamer.rb in elster-0.0.3
- old
+ new
@@ -1,10 +1,10 @@
-require "stringio"
require "multi_json"
module Elster
class Streamer
+ attr_reader :output
# Create a new instance of Streamer with the specified output stream. The
# `output` must respond to `write`.
def initialize(output)
@output = output
# Some mutable state to make Rich Hickey weep.
@@ -104,14 +104,39 @@
def write(output)
@output.write(output)
end
def encode_value(value)
+ case value
+ when Numeric
+ encode_number(value)
+ when String
+ encode_string(value)
+ when nil
+ encode_nil(value)
+ else
+ MultiJson.dump(value)
+ end
+ end
+
+ def encode_generic(value)
MultiJson.dump(value)
end
def encode_string(value)
- encode_value(value.to_s)
+ if /\A[\w\d \t]+\Z/ =~ value
+ "\"#{value}\""
+ else
+ encode_generic(value.to_s)
+ end
+ end
+
+ def encode_number(value)
+ value.to_s
+ end
+
+ def encode_nil(value)
+ "null"
end
def nest_in
@stack.push([@item_count, @current_type])
@item_count = 0