class Unparser::Emitter::Block

Block emitter

Private Instance Methods

dispatch() click to toggle source
# File lib/unparser/emitter/block.rb, line 14
def dispatch
  emit_target
  ws
  write_open
  target_writer.emit_heredoc_reminders if n_send?(target)
  emit_block_arguments unless n_lambda?(target)
  emit_optional_body_ensure_rescue(body)
  write_close
end
emit_block_arguments() click to toggle source
# File lib/unparser/emitter/block.rb, line 75
def emit_block_arguments
  return if numblock? || arguments.children.empty?

  ws

  parentheses('|', '|') do
    writer_with(Args, arguments).emit_block_arguments
  end
end
emit_lambda_arguments() click to toggle source
# File lib/unparser/emitter/block.rb, line 67
def emit_lambda_arguments
  parentheses { writer_with(Args, arguments).emit_lambda_arguments }
end
emit_send_target() click to toggle source
# File lib/unparser/emitter/block.rb, line 61
def emit_send_target
  target_writer.emit_receiver
  target_writer.emit_selector
  target_writer.emit_arguments_without_heredoc_body
end
emit_target() click to toggle source
# File lib/unparser/emitter/block.rb, line 49
def emit_target
  case target.type
  when :send
    emit_send_target
  when :lambda
    visit(target)
    emit_lambda_arguments unless node.type.equal?(:numblock)
  else
    visit(target)
  end
end
need_do?() click to toggle source
# File lib/unparser/emitter/block.rb, line 24
def need_do?
  body && (n_rescue?(body) || n_ensure?(body))
end
numblock?() click to toggle source
# File lib/unparser/emitter/block.rb, line 71
def numblock?
  node.type.equal?(:numblock)
end
target_writer() click to toggle source
# File lib/unparser/emitter/block.rb, line 44
def target_writer
  writer_with(Writer::Send::Regular, target)
end
write_close() click to toggle source
# File lib/unparser/emitter/block.rb, line 36
def write_close
  if need_do?
    k_end
  else
    write('}')
  end
end
write_open() click to toggle source
# File lib/unparser/emitter/block.rb, line 28
def write_open
  if need_do?
    write('do')
  else
    write('{')
  end
end