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.



630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# File 'lib/json/truffle_ruby/generator.rb', line 630

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

      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