Class: ThemeCheck::DisabledChecks

Inherits:
Object
  • Object
show all
Defined in:
lib/theme_check/disabled_checks.rb

Constant Summary collapse

DISABLE_START =
'theme-check-disable'
DISABLE_END =
'theme-check-enable'
DISABLE_PREFIX_PATTERN =
/#{DISABLE_START}|#{DISABLE_END}/
ACTION_DISABLE_CHECKS =
:disable
ACTION_ENABLE_CHECKS =
:enable

Instance Method Summary collapse

Constructor Details

#initializeDisabledChecks

Returns a new instance of DisabledChecks.



12
13
14
15
16
17
# File 'lib/theme_check/disabled_checks.rb', line 12

def initialize
  @disabled_checks = Hash.new do |hash, key|
    theme_file, check_name = key
    hash[key] = DisabledCheck.new(theme_file, check_name)
  end
end

Instance Method Details

#checks_missing_end_indexObject



51
52
53
54
55
# File 'lib/theme_check/disabled_checks.rb', line 51

def checks_missing_end_index
  @disabled_checks.values
    .select(&:missing_end_index?)
    .map(&:name)
end

#disabled?(check, theme_file, check_name, index) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
# File 'lib/theme_check/disabled_checks.rb', line 42

def disabled?(check, theme_file, check_name, index)
  return true if check.ignored_patterns&.any? do |pattern|
    theme_file.relative_path.fnmatch?(pattern)
  end

  @disabled_checks[[theme_file, :all]]&.disabled?(index) ||
    @disabled_checks[[theme_file, check_name]]&.disabled?(index)
end

#remove_disabled_offenses(checks) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/theme_check/disabled_checks.rb', line 57

def remove_disabled_offenses(checks)
  checks.disableable.each do |check|
    check.offenses.reject! do |offense|
      disabled?(check, offense.theme_file, offense.code_name, offense.start_index)
    end
  end
end

#update(node) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/theme_check/disabled_checks.rb', line 19

def update(node)
  text = comment_text(node)
  if start_disabling?(text)
    checks_from_text(text).each do |check_name|
      disabled = @disabled_checks[[node.theme_file, check_name]]
      disabled.start_index = node.start_index
      disabled.first_line = true if node.line_number == 1
    end
  elsif stop_disabling?(text)
    checks_from_text(text).each do |check_name|
      disabled = @disabled_checks[[node.theme_file, check_name]]
      next unless disabled
      disabled.end_index = node.end_index
    end
  else
    # We want to disable checks inside comments
    # (e.g. html checks inside {% comment %})
    disabled = @disabled_checks[[node.theme_file, :all]]
    disabled.start_index = node.inner_markup_start_index
    disabled.end_index = node.inner_markup_end_index
  end
end