class TOML::InlineTable

def accept_visitor(keyvalue)

def accept_visitor(keyvalue)
  keyvalue.visit_inline_table self
end

def initialize(keyvalue_pairs)

def initialize(keyvalue_pairs)
  @pairs = keyvalue_pairs
  @symbolize_keys = false
end

def key(a_key)

def key(a_key)
  symbolize_keys ? a_key.to_sym : a_key
end

def value(symbolize_keys = false)

def value(symbolize_keys = false)
  if (@symbolize_keys = symbolize_keys)
    tuple = ->(kv) { [kv.key.to_sym, visit_value(kv.value)] }
  else
    tuple = ->(kv) { [kv.key, visit_value(kv.value)] }
  end
  Hash[@pairs.map(&tuple)]
end

def visit_inline_table(inline_table)

def visit_inline_table(inline_table)
  result = {}
  inline_table.value(@symbolize_keys).each do |k, v|
    result[key k] = visit_value v
  end
  result
end

def visit_value(a_value)

def visit_value(a_value)
  return a_value unless a_value.respond_to? :accept_visitor
  a_value.accept_visitor self
end