Module: Uniword::Validation::Rules::Registry
- Defined in:
- lib/uniword/validation/rules/registry.rb
Overview
Registry for validation rules. Supports registration and lookup.
Rules are registered globally and discovered by category or code. Users can add custom rules by subclassing Base and calling register.
Class Method Summary collapse
-
.all ⇒ Array<Base>
Get all registered rule instances.
-
.find(code) ⇒ Base?
Find a rule by its code.
-
.for_category(category) ⇒ Array<Base>
Get rule instances for a specific category.
-
.register(rule_class) ⇒ Object
Register a validation rule class.
-
.reset! ⇒ Object
Clear all registered rules (useful for testing).
-
.rule_classes ⇒ Array<Class>
Get all registered rule classes.
Class Method Details
.all ⇒ Array<Base>
Get all registered rule instances.
35 36 37 |
# File 'lib/uniword/validation/rules/registry.rb', line 35 def self.all @rules.map(&:new) end |
.find(code) ⇒ Base?
Find a rule by its code.
51 52 53 |
# File 'lib/uniword/validation/rules/registry.rb', line 51 def self.find(code) all.find { |r| r.code == code } end |
.for_category(category) ⇒ Array<Base>
Get rule instances for a specific category.
43 44 45 |
# File 'lib/uniword/validation/rules/registry.rb', line 43 def self.for_category(category) all.select { |r| r.category == category } end |
.register(rule_class) ⇒ Object
Register a validation rule class.
26 27 28 29 30 |
# File 'lib/uniword/validation/rules/registry.rb', line 26 def self.register(rule_class) @mutex.synchronize do @rules << rule_class unless @rules.include?(rule_class) end end |
.reset! ⇒ Object
Clear all registered rules (useful for testing).
56 57 58 |
# File 'lib/uniword/validation/rules/registry.rb', line 56 def self.reset! @mutex.synchronize { @rules.clear } end |
.rule_classes ⇒ Array<Class>
Get all registered rule classes.
63 64 65 |
# File 'lib/uniword/validation/rules/registry.rb', line 63 def self.rule_classes @rules.dup end |