Module: WhyClasses::Registry

Defined in:
lib/why_classes/registry.rb

Overview

Tracks every Rule subclass and resolves the active set from --only/--except and the configuration.

Class Method Summary collapse

Class Method Details

.active(configuration:, only: nil, except: nil) ⇒ Object

Resolve the rule classes to run given config + CLI selection.

An explicit --only forces the listed rules on even if they are disabled by default/config (mirrors RuboCop's --only); otherwise the config's Enabled flag decides.



36
37
38
39
40
41
42
43
44
# File 'lib/why_classes/registry.rb', line 36

def active(configuration:, only: nil, except: nil)
  only = Array(only)
  except = Array(except)
  selected = all.reject { |r| except.include?(r.rule_name) }

  return selected.select { |r| only.include?(r.rule_name) } unless only.empty?

  selected.select { |r| configuration.enabled?(r.rule_name) }
end

.allObject



15
16
17
# File 'lib/why_classes/registry.rb', line 15

def all
  @rules.values
end

.fetch(name) ⇒ Object



23
24
25
# File 'lib/why_classes/registry.rb', line 23

def fetch(name)
  @rules.fetch(name)
end

.known?(name) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/why_classes/registry.rb', line 27

def known?(name)
  @rules.key?(name)
end

.namesObject



19
20
21
# File 'lib/why_classes/registry.rb', line 19

def names
  @rules.keys
end

.register(rule_class) ⇒ Object



11
12
13
# File 'lib/why_classes/registry.rb', line 11

def register(rule_class)
  @rules[rule_class.rule_name] = rule_class
end