Class: Uniword::Accessibility::AccessibilityRule Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/uniword/accessibility/accessibility_rule.rb

Overview

This class is abstract.

Subclass and implement #check to create a rule

Accessibility Rule - base class for all accessibility rules

Responsibility: Define rule interface and common functionality Single Responsibility: Rule interface and violation creation only

Examples:

Implementing a custom rule

class MyCustomRule < AccessibilityRule
  def check(document)
    violations = []
    # Check logic here
    violations << create_violation(...) if issue_found
    violations
  end
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ AccessibilityRule

Initialize a new accessibility rule

Parameters:

  • config (Hash)

    Rule configuration from profile

Options Hash (config):

  • :wcag_criterion (String)

    WCAG criterion number

  • :level (String)

    WCAG level (A, AA, AAA)

  • :enabled (Boolean)

    Whether rule is enabled

  • :severity (Symbol)

    Default severity level



31
32
33
34
35
36
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 31

def initialize(config)
  @config = config || {}
  @rule_id = derive_rule_id
  @wcag_criterion = @config[:wcag_criterion]
  @level = @config[:level]
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



22
23
24
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 22

def config
  @config
end

#levelObject (readonly)

Returns the value of attribute level.



22
23
24
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 22

def level
  @level
end

#rule_idObject (readonly)

Returns the value of attribute rule_id.



22
23
24
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 22

def rule_id
  @rule_id
end

#wcag_criterionObject (readonly)

Returns the value of attribute wcag_criterion.



22
23
24
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 22

def wcag_criterion
  @wcag_criterion
end

Instance Method Details

#check(document) ⇒ Array<AccessibilityViolation>

Check document against rule

Parameters:

  • document (Document)

    Document to check

Returns:

Raises:

  • (NotImplementedError)

    If not implemented by subclass



50
51
52
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 50

def check(document)
  raise NotImplementedError, "#{self.class} must implement #check"
end

#enabled?Boolean

Check if rule is enabled

Returns:

  • (Boolean)

    True if rule is enabled



41
42
43
# File 'lib/uniword/accessibility/accessibility_rule.rb', line 41

def enabled?
  @config.fetch(:enabled, true)
end