lib/rubocop/cop/layout/multiline_array_brace_layout.rb
# frozen_string_literal: true
module RuboCop
module Cop
module Layout
# Checks that the closing brace in an array literal is either
# on the same line as the last array element or on a new line.
#
# When using the `symmetrical` (default) style:
#
# If an array's opening brace is on the same line as the first element
# of the array, then the closing brace should be on the same line as
# the last element of the array.
#
# If an array's opening brace is on the line above the first element
# of the array, then the closing brace should be on the line below
# the last element of the array.
#
# When using the `new_line` style:
#
# The closing brace of a multi-line array literal must be on the line
# after the last element of the array.
#
# When using the `same_line` style:
#
# The closing brace of a multi-line array literal must be on the same
# line as the last element of the array.
#
# @example EnforcedStyle: symmetrical (default)
# # bad
# [ :a,
# :b
# ]
#
# # bad
# [
# :a,
# :b ]
#
# # good
# [ :a,
# :b ]
#
# # good
# [
# :a,
# :b
# ]
#
# @example EnforcedStyle: new_line
# # bad
# [
# :a,
# :b ]
#
# # bad
# [ :a,
# :b ]
#
# # good
# [ :a,
# :b
# ]
#
# # good
# [
# :a,
# :b
# ]
#
# @example EnforcedStyle: same_line
# # bad
# [ :a,
# :b
# ]
#
# # bad
# [
# :a,
# :b
# ]
#
# # good
# [
# :a,
# :b ]
#
# # good
# [ :a,
# :b ]
class MultilineArrayBraceLayout < Base
include MultilineLiteralBraceLayout
extend AutoCorrector
SAME_LINE_MESSAGE = 'The closing array brace must be on the same ' \
'line as the last array element when the opening brace is on the ' \
'same line as the first array element.'
NEW_LINE_MESSAGE = 'The closing array brace must be on the line ' \
'after the last array element when the opening brace is on a ' \
'separate line from the first array element.'
ALWAYS_NEW_LINE_MESSAGE = 'The closing array brace must be on the ' \
'line after the last array element.'
ALWAYS_SAME_LINE_MESSAGE = 'The closing array brace must be on the ' \
'same line as the last array element.'
def on_array(node)
check_brace_layout(node)
end
end
end
end
end