/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