Sha256: 562dc15a313a5772b22b56d8320cd4a4eb5d159862961636abb7efa1b0be47fa

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module Jsonify
  module Generate

    class << self
      
      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 Array; array_value val
          when Hash; object_value val
          else string_value val
        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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jsonify-0.0.1 lib/jsonify/generate.rb