Sha256: ae0f5ef1f40e98b1122c5b855ad663340c61c850d3efdbc8bea9ac48e4d4765f

Contents?: true

Size: 752 Bytes

Versions: 2

Compression:

Stored size: 752 Bytes

Contents

require 'active_support/time'

module JSONBuilder
  class Value
    attr_accessor :value
    
    def initialize(scope, arg, &block)
      if block_given?
        @value = Compiler.new(:scope => scope)
        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.3 lib/json_builder/value.rb
json_builder-3.0.2 lib/json_builder/value.rb