Class: Uniword::Accessibility::Rules::ImageAltTextRule

Inherits:
AccessibilityRule show all
Defined in:
lib/uniword/accessibility/rules/image_alt_text_rule.rb

Overview

Image Alt Text Rule - WCAG 1.1.1 Non-text Content

Responsibility: Check that images have alternative text Single Responsibility: Image alt text validation only

WCAG 1.1.1 Level A: All non-text content must have text alternative

Instance Attribute Summary

Attributes inherited from AccessibilityRule

#config, #level, #rule_id, #wcag_criterion

Instance Method Summary collapse

Methods inherited from AccessibilityRule

#enabled?, #initialize

Constructor Details

This class inherits a constructor from Uniword::Accessibility::AccessibilityRule

Instance Method Details

#check(document) ⇒ Array<AccessibilityViolation>

Check document images for alt text

Parameters:

  • document (Document)

    Document to check

Returns:



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/uniword/accessibility/rules/image_alt_text_rule.rb', line 17

def check(document)
  violations = []

  document.images.each_with_index do |image, index|
    # Check for alt text existence
    if image.alt_text.nil? || image.alt_text.strip.empty?
      violations << create_violation(
        message: "Image #{index + 1} missing alternative text",
        element: image,
        severity: @config[:severity] || :error,
        suggestion: @config[:suggestion] ||
          "Add descriptive alternative text using image.alt_text = '...'",
      )
      next # Skip quality checks if no alt text
    end

    # Check alt text quality if enabled
    next unless @config[:check_quality]

    violations.concat(check_alt_text_quality(image, index))
  end

  violations
end