class RuboCop::Cop::Style::BisectedAttrAccessor::Macro

Representation of an `attr_reader`, `attr_writer` or `attr` macro for use by `Style/BisectedAttrAccessor`. @api private

Attributes

attrs[R]
bisection[R]
node[R]

Public Class Methods

macro?(node) click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 15
def self.macro?(node)
  node.method?(:attr_reader) || node.method?(:attr_writer) || node.method?(:attr)
end
new(node) click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 19
def initialize(node)
  @node = node
  @attrs = node.arguments.to_h { |attr| [attr.source, attr] }
  @bisection = []
end

Public Instance Methods

all_bisected?() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 49
def all_bisected?
  rest.none?
end
attr_names() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 29
def attr_names
  @attr_names ||= attrs.keys
end
bisect(*names) click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 25
def bisect(*names)
  @bisection = attrs.slice(*names).values
end
bisected_names() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 33
def bisected_names
  bisection.map(&:source)
end
reader?() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 41
def reader?
  node.method?(:attr_reader) || node.method?(:attr)
end
rest() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 53
def rest
  @rest ||= attr_names - bisected_names
end
visibility() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 37
def visibility
  @visibility ||= node_visibility(node)
end
writer?() click to toggle source
# File lib/rubocop/cop/style/bisected_attr_accessor/macro.rb, line 45
def writer?
  node.method?(:attr_writer)
end