Module JSON::Pure::Generator::GeneratorMethods::Array
In: lib/json/pure/generator.rb
JSONError GeneratorError ParserError MissingUnicodeSupport CircularDatastructure NestingError StandardError Gtk StringScanner Parser State lib/json/common.rb Ext Editor lib/json/pure/parser.rb lib/json/pure/generator.rb Object Integer FalseClass Array Hash Float NilClass TrueClass Extend String GeneratorMethods Generator Pure JSON dot/m_9_3.png

Methods

Public Instance methods

Returns a JSON string containing a JSON array, that is unparsed from this Array instance. state is a JSON::State object, that can also be used to configure the produced JSON string output further. depth is used to find out nesting depth, to indent accordingly.

[Source]

     # File lib/json/pure/generator.rb, line 299
299:           def to_json(state = nil, depth = 0, *)
300:             if state
301:               state = JSON.state.from_state(state)
302:               state.check_max_nesting(depth)
303:               json_check_circular(state) { json_transform(state, depth) }
304:             else
305:               json_transform(state, depth)
306:             end
307:           end

Private Instance methods

[Source]

     # File lib/json/pure/generator.rb, line 311
311:           def json_check_circular(state)
312:             if state and state.check_circular?
313:               state.seen?(self) and raise JSON::CircularDatastructure,
314:                 "circular data structures not supported!"
315:               state.remember self
316:             end
317:             yield
318:           ensure
319:             state and state.forget self
320:           end

[Source]

     # File lib/json/pure/generator.rb, line 322
322:           def json_shift(state, depth)
323:             state and not state.array_nl.empty? or return ''
324:             state.indent * depth
325:           end

[Source]

     # File lib/json/pure/generator.rb, line 327
327:           def json_transform(state, depth)
328:             delim = ','
329:             if state
330:               delim << state.array_nl
331:               result = '['
332:               result << state.array_nl
333:               result << map { |value|
334:                 json_shift(state, depth + 1) << value.to_json(state, depth + 1)
335:               }.join(delim)
336:               result << state.array_nl
337:               result << json_shift(state, depth) 
338:               result << ']'
339:             else
340:               '[' << map { |value| value.to_json }.join(delim) << ']'
341:             end
342:           end

[Validate]