class RuboCop::DirectiveComment

cops it contains.
special ‘rubocop:disable` and `rubocop:enable` comment and exposes what
This class wraps the `Parser::Source::Comment` object that represents a

def self.before_comment(line)

def self.before_comment(line)
  line.split(DIRECTIVE_COMMENT_REGEXP).first
end

def all_cop_names

def all_cop_names
  Cop::Registry.global.names - [REDUNDANT_COP]
end

def all_cops?

Checks if all cops specified in this directive
def all_cops?
  cops == 'all'
end

def cop_names

Returns array of specified in this directive cop names
def cop_names
  @cop_names ||= all_cops? ? all_cop_names : parsed_cop_names
end

def disabled?

Checks if this directive disables cops
def disabled?
  %w[disable todo].include?(mode)
end

def enabled?

Checks if this directive enables cops
def enabled?
  mode == 'enable'
end

def enabled_all?

Checks if this directive enables all cops
def enabled_all?
  !disabled? && all_cops?
end

def initialize(comment)

def initialize(comment)
  @comment = comment
  @mode, @cops = match_captures
end

def line_number

Returns line number for directive
def line_number
  comment.loc.expression.line
end

def match?(cop_names)

Checks if this directive contains all the given cop names
def match?(cop_names)
  parsed_cop_names.uniq.sort == cop_names.uniq.sort
end

def match_captures

Returns match captures to directive comment pattern
def match_captures
  @match_captures ||= comment.text.match(DIRECTIVE_COMMENT_REGEXP)&.captures
end

def parsed_cop_names

def parsed_cop_names
  (cops || '').split(/,\s*/)
end

def range

def range
  comment.location.expression
end

def single_line?

Checks if this directive relates to single line
def single_line?
  !self.class.before_comment(comment.text).empty?
end