class RuboCop::Cop::Layout::MultilineHashKeyLineBreaks

Ensures that each key in a multi-line hash starts on a separate line.

@example

# bad
{
  a: 1, b: 2,
  c: 3
}

# good
{
  a: 1,
  b: 2,
  c: 3
}

# good
{
  a: 1,
  b: {
    c: 3,
  }
}

@example AllowMultilineFinalElement: false (default)

# bad
{ a: 1, b: {
  c: 3,
}}

@example AllowMultilineFinalElement: true

# good
{ a: 1, b: {
  c: 3,
}}

Constants

MSG

Public Instance Methods

on_hash(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb, line 52
def on_hash(node)
  # This cop only deals with hashes wrapped by a set of curly
  # braces like {foo: 1}. That is, not a kwargs hashes.
  # Style/MultilineMethodArgumentLineBreaks handles those.
  return unless starts_with_curly_brace?(node)
  return unless node.loc.begin

  check_line_breaks(node, node.children, ignore_last: ignore_last_element?)
end

Private Instance Methods

ignore_last_element?() click to toggle source
# File lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb, line 68
def ignore_last_element?
  !!cop_config['AllowMultilineFinalElement']
end
starts_with_curly_brace?(node) click to toggle source
# File lib/rubocop/cop/layout/multiline_hash_key_line_breaks.rb, line 64
def starts_with_curly_brace?(node)
  node.loc.begin
end