module JSON::Pure::Generator::GeneratorMethods::Hash

Public Instance Methods

to_json(state = nil, *) click to toggle source

Returns a JSON string containing a JSON object, that is unparsed from this Hash 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.

# File lib/json/pure/generator.rb, line 338
def to_json(state = nil, *)
  state = State.from_state(state)
  state.check_max_nesting
  json_transform(state)
end

Private Instance Methods

json_shift(state) click to toggle source
# File lib/json/pure/generator.rb, line 346
def json_shift(state)
  state.object_nl.empty? or return ''
  state.indent * state.depth
end
json_transform(state) click to toggle source
# File lib/json/pure/generator.rb, line 351
def json_transform(state)
  delim = ','
  delim << state.object_nl
  result = '{'
  result << state.object_nl
  depth = state.depth += 1
  first = true
  indent = !state.object_nl.empty?
  each { |key,value|
    result << delim unless first
    result << state.indent * depth if indent
    result << key.to_s.to_json(state)
    result << state.space_before
    result << ':'
    result << state.space
    result << value.to_json(state)
    first = false
  }
  depth = state.depth -= 1
  result << state.object_nl
  result << state.indent * depth if indent
  result << '}'
  result
end