class RuboCop::Cop::Style::AccessModifierDeclarations
end
private :bar, :baz
class Foo
# bad
@example AllowModifiersOnSymbols: false
end
private :bar, :baz
class Foo
# good
@example AllowModifiersOnSymbols: true (default)
end
private def baz; end
private def bar; end
class Foo
# good
end
def baz; end
def bar; end
private
class Foo
# bad
@example EnforcedStyle: inline
end
def baz; end
def bar; end
private
class Foo
# good
end
private def baz; end
private def bar; end
class Foo
# bad
@example EnforcedStyle: group (default)
using AllowModifiersOnSymbols config.
Applications of visibility methods to symbols can be controlled
EnforcedStyle config covers only method definitions.
or inline before each method, depending on configuration.
Access modifiers should be declared to apply to a group of methods
def access_modifier_is_inlined?(node)
def access_modifier_is_inlined?(node) node.arguments.any? end
def access_modifier_is_not_inlined?(node)
def access_modifier_is_not_inlined?(node) !access_modifier_is_inlined?(node) end
def allow_modifiers_on_symbols?(node)
def allow_modifiers_on_symbols?(node) cop_config['AllowModifiersOnSymbols'] && access_modifier_with_symbol?(node) end
def group_style?
def group_style? style == :group end
def inline_style?
def inline_style? style == :inline end
def message(range)
def message(range) access_modifier = range.source if group_style? format(GROUP_STYLE_MESSAGE, access_modifier: access_modifier) elsif inline_style? format(INLINE_STYLE_MESSAGE, access_modifier: access_modifier) end end
def offense?(node)
def offense?(node) (group_style? && access_modifier_is_inlined?(node)) || (inline_style? && access_modifier_is_not_inlined?(node)) end
def on_send(node)
def on_send(node) return unless node.access_modifier? return if node.parent&.pair_type? return if allow_modifiers_on_symbols?(node) if offense?(node) add_offense(node.loc.selector) { opposite_style_detected } else correct_style_detected end end