class Unparser::Emitter::HashPattern

Emitter for hash patterns

def dispatch

def dispatch
  parentheses('{', '}') do
    emit_hash_body
  end
end

def emit_const_pattern

def emit_const_pattern
  parentheses do
    emit_hash_body
  end
end

def emit_hash_body

def emit_hash_body
  delimited(children, &method(:emit_member))
end

def emit_match_var(node)

def emit_match_var(node)
  write_symbol_body(node.children.first)
  write(':')
end

def emit_member(node)

def emit_member(node)
  case node.type
  when :pair
    emit_pair(node)
  when :match_var
    emit_match_var(node)
  when :match_rest
    writer_with(MatchRest, node:).emit_hash_pattern
  else
    visit(node)
  end
end

def emit_pair(node)

def emit_pair(node)
  key, value = node.children
  if n_sym?(key)
    write_symbol_body(key.children.first)
  else
    visit(s(:dstr, *key))
  end
  write(':')
  ws
  visit(value)
end

def write_symbol_body(symbol)

def write_symbol_body(symbol)
  write(symbol.inspect[1..])
end