lib/jsonify/generate.rb in jsonify-0.0.8 vs lib/jsonify/generate.rb in jsonify-0.0.9
- old
+ new
@@ -2,71 +2,50 @@
# Provides a set of functions for creating JsonValues from Ruby objects.
module Generate
class << self
-
- # Coerces the given value into a JsonValue.
+
+ # Coerces the given value into a JsonValue (or subclass), String, or Number.
#
# The coercion rules are based on the type (class) of the value as follows:
# - +JsonValue+ => no coercion
- # - +String+ => JsonString ( \"foo\" )
- # - +Numeric+ => JsonNumber ( 1 )
+ # - +String+ => no coercion
+ # - +Numeric+ => no coercion
# - +TrueClass+ => JsonTrue ( true )
# - +FalseClass+=> JsonFalse ( false )
# - +NilClass+ => JsonNull ( null )
# - +Array+ => JsonArray ( [1,2,3] )
# - +Hash+ => JsonObject ( <code>{"\a":1,\"b\":2}</code> )
+ # - +else+ => #to_s
#
# @param val value to coerce into a JsonValue.
def value(val)
case val
- when JsonValue; val
- when String; string_value val
- when Numeric; number_value val
- when TrueClass; true_value
- when FalseClass; false_value
- when NilClass; null_value
+ when JsonValue, String, Numeric; val
+ when TrueClass; @json_true ||= JsonTrue.new
+ when FalseClass; @json_false ||= JsonFalse.new
+ when NilClass; @json_null ||= JsonNull.new
when Array; array_value val
- when Hash; object_value val
- else string_value val
+ when Hash; object_value val
+ else val.to_s
end
end
def pair_value(key,val=nil)
JsonPair.new(key,value(val))
end
- def string_value(val)
- JsonString.new(val)
- end
-
def object_value(hash)
json_object = JsonObject.new
hash.each { |key,val| json_object.add( pair_value(key, val) ) }
json_object
end
def array_value(vals)
JsonArray.new(Array(vals).map{ |v| value v })
end
- def number_value(val)
- JsonNumber.new(val)
- end
-
- def true_value
- @json_true ||= JsonTrue.new # memoize
- end
-
- def false_value
- @json_false ||= JsonFalse.new # memoize
- end
-
- def null_value
- @json_null ||= JsonNull.new # memoize
- end
-
end
end
end
\ No newline at end of file