Module: JSON::TruffleRuby::Generator::GeneratorMethods::Float

Defined in:
lib/json/truffle_ruby/generator.rb

Instance Method Summary collapse

Instance Method Details

#to_json(state = nil, *args) ⇒ Object

Returns a JSON string representation for this Float number.



698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
# File 'lib/json/truffle_ruby/generator.rb', line 698

def to_json(state = nil, *args)
  state = State.from_state(state)
  if infinite? || nan?
    if state.allow_nan?
      to_s
    elsif state.strict? && state.as_json
      casted_value = state.as_json.call(self, false)

      if casted_value.equal?(self)
        raise GeneratorError.new("#{self} not allowed in JSON", self)
      end
      unless Generator.native_type?(casted_value)
        raise GeneratorError.new("#{casted_value.class} returned by #{state.as_json} not allowed in JSON", casted_value)
      end

      state.check_max_nesting
      state.depth += 1
      result = casted_value.to_json(state, *args)
      state.depth -= 1
      result
    else
      raise GeneratorError.new("#{self} not allowed in JSON", self)
    end
  else
    to_s
  end
end