module JSON::TruffleRuby::Generator::GeneratorMethods::Array
Public Instance Methods
Source
# File lib/json/truffle_ruby/generator.rb, line 596 def to_json(state = nil, *) state = State.from_state(state) depth = state.depth state.check_max_nesting json_transform(state) ensure state.depth = depth end
Private Instance Methods
Source
# File lib/json/truffle_ruby/generator.rb, line 607 def json_transform(state) depth = state.depth += 1 if empty? state.depth -= 1 return +'[]' end result = '['.dup if state.array_nl.empty? delim = "," else result << state.array_nl delim = ",#{state.array_nl}" end first = true indent = !state.array_nl.empty? each { |value| result << delim unless first result << state.indent * depth if indent if state.strict? && !Generator.native_type?(value) if state.as_json value = state.as_json.call(value, false) unless Generator.native_type?(value) raise GeneratorError.new("#{value.class} returned by #{state.as_json} not allowed in JSON", value) end result << value.to_json(state) else raise GeneratorError.new("#{value.class} not allowed in JSON", value) end elsif value.respond_to?(:to_json) result << value.to_json(state) state.depth = depth else result << %{"#{String(value)}"} end first = false } depth -= 1 result << state.array_nl result << state.indent * depth if indent result << ']' end