Module JSON::Pure::Generator::GeneratorMethods::Array
In: lib/json/pure/generator.rb
JSONError GeneratorError ParserError MissingUnicodeSupport CircularDatastructure NestingError StandardError StringScanner Parser Gtk State lib/json/common.rb lib/json/pure/parser.rb lib/json/pure/generator.rb TrueClass Integer Float Array Extend String Object FalseClass NilClass Hash GeneratorMethods Generator Pure Editor Ext JSON dot/m_9_1.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 298
298:           def to_json(state = nil, depth = 0, *)
299:             if state
300:               state = JSON.state.from_state(state)
301:               state.check_max_nesting(depth)
302:               json_check_circular(state) { json_transform(state, depth) }
303:             else
304:               json_transform(state, depth)
305:             end
306:           end

Private Instance methods

[Source]

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

[Source]

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

[Source]

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

[Validate]