Class: Uniword::Quality::QualityRule
- Inherits:
-
Object
- Object
- Uniword::Quality::QualityRule
- Defined in:
- lib/uniword/quality/quality_rule.rb
Overview
Base class for document quality rules.
Responsibility: Define the interface for quality checking rules. Each rule checks one specific aspect of document quality.
Follows Single Responsibility Principle - one rule checks one quality aspect. Follows Open/Closed Principle - new rules can be added without modifying this class.
Direct Known Subclasses
HeadingHierarchyRule, ImageAltTextRule, LinkValidationRule, ParagraphLengthRule, StyleConsistencyRule, TableHeaderRule
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#enabled ⇒ Object
readonly
Returns the value of attribute enabled.
Instance Method Summary collapse
-
#check(document) ⇒ Array<QualityViolation>
Check document for quality violations.
-
#enabled? ⇒ Boolean
Check if rule is enabled.
-
#initialize(config = {}) ⇒ QualityRule
constructor
Initialize quality rule.
-
#name ⇒ String
Get rule name (used for identification).
Constructor Details
#initialize(config = {}) ⇒ QualityRule
Initialize quality rule
33 34 35 36 |
# File 'lib/uniword/quality/quality_rule.rb', line 33 def initialize(config = {}) @config = config || {} @enabled = @config.fetch(:enabled, true) end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
27 28 29 |
# File 'lib/uniword/quality/quality_rule.rb', line 27 def config @config end |
#enabled ⇒ Object (readonly)
Returns the value of attribute enabled.
27 28 29 |
# File 'lib/uniword/quality/quality_rule.rb', line 27 def enabled @enabled end |
Instance Method Details
#check(document) ⇒ Array<QualityViolation>
Check document for quality violations
49 50 51 |
# File 'lib/uniword/quality/quality_rule.rb', line 49 def check(document) raise NotImplementedError, "#{self.class} must implement #check" end |
#enabled? ⇒ Boolean
Check if rule is enabled
41 42 43 |
# File 'lib/uniword/quality/quality_rule.rb', line 41 def enabled? @enabled end |
#name ⇒ String
Get rule name (used for identification)
56 57 58 59 60 61 62 |
# File 'lib/uniword/quality/quality_rule.rb', line 56 def name self.class.name.split("::").last .gsub(/Rule$/, "") .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .downcase end |