module JSON::TruffleRuby::Generator::GeneratorMethods::Float

Public Instance Methods

Returns a JSON string representation for this Float number.

# File lib/json/truffle_ruby/generator.rb, line 579
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)

      if casted_value.equal?(self)
        raise GeneratorError.new("#{self} not allowed in JSON", self)
      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