module JSON::TruffleRuby::Generator::GeneratorMethods::Array
def json_transform(state)
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? && !(false == value || true == value || nil == value || String === value || Array === value || Hash === value || Integer === value || Float === value || Fragment === value || Symbol == value) if state.as_json value = state.as_json.call(value) unless false == value || true == value || nil == value || String === value || Array === value || Hash === value || Integer === value || Float === value || Fragment === value || Symbol === 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) else result << %{"#{String(value)}"} end first = false } depth = state.depth -= 1 result << state.array_nl result << state.indent * depth if indent result << ']' end