lib/rubocop/comment_config.rb in rubocop-0.55.0 vs lib/rubocop/comment_config.rb in rubocop-0.56.0

- old
+ new

@@ -41,21 +41,18 @@ private def extra_enabled_comments_with_names(extras, names) each_directive do |comment, cop_names, disabled| next unless comment_only_line?(comment.loc.expression.line) - cop_names.each do |name| - names[name] ||= 0 - if disabled - names[name] += 1 - elsif names[name] > 0 - names[name] -= 1 - else - extras << [comment, name] - end + + if !disabled && enable_all?(comment) + handle_enable_all(names, extras, comment) + else + handle_switch(cop_names, names, disabled, extras, comment) end end + extras end def analyze analyses = Hash.new { |hash, key| hash[key] = CopAnalysis.new([], nil) } @@ -165,9 +162,39 @@ def non_comment_token_line_numbers @non_comment_token_line_numbers ||= begin non_comment_tokens = processed_source.tokens.reject(&:comment?) non_comment_tokens.map(&:line).uniq + end + end + + def enable_all?(comment) + _, cops = comment.text.match(COMMENT_DIRECTIVE_REGEXP).captures + cops == 'all' + end + + def handle_enable_all(names, extras, comment) + enabled_cops = 0 + names.each do |name, counter| + next unless counter > 0 + + names[name] -= 1 + enabled_cops += 1 + end + + extras << [comment, 'all'] if enabled_cops.zero? + end + + def handle_switch(cop_names, names, disabled, extras, comment) + cop_names.each do |name| + names[name] ||= 0 + if disabled + names[name] += 1 + elsif names[name] > 0 + names[name] -= 1 + else + extras << [comment, name] + end end end end end