Sha256: 4154a28d011a2a469be3fee331324dfa1f8be3bcb37f6828e15d0b506603e871

Contents?: true

Size: 729 Bytes

Versions: 2

Compression:

Stored size: 729 Bytes

Contents

require 'active_support/time'

module JSONBuilder
  class Value
    attr_accessor :value
    
    def initialize(arg, &block)
      if block_given?
        @value = Compiler.new
        compiled = @value.compile(*arg, &block)
        
        # For the use case that the passed in block returns a non-member object
        # or normal Ruby object
        @value = compiled unless compiled.is_a?(Member)
      else
        @value = arg
      end
    end
    
    def to_s
      case @value
      when String, TrueClass, FalseClass then @value.inspect
      when Hash then @value.to_json
      when NilClass then 'null'
      when Time, Date, DateTime then @value.iso8601.inspect
      else @value.to_s
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
json_builder-3.0.1 lib/json_builder/value.rb
json_builder-3.0.0 lib/json_builder/value.rb