Sha256: aed73502f77a3044e354f11d3f9ce910f3b411db8084fda28fd0fec9104dcb45

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

# encoding: utf-8

class Image < ::HTML::Proofer::Checkable

  SCREEN_SHOT_REGEX = /Screen(?: |%20)Shot(?: |%20)\d+-\d+-\d+(?: |%20)at(?: |%20)\d+.\d+.\d+/

  def valid_alt_tag?
    @alt and !@alt.empty?
  end

  def terrible_filename?
    @src =~ SCREEN_SHOT_REGEX
  end

  def src
    @src unless @src.nil? || @src.empty?
  end

  def missing_src?
    !src
  end

end

class Images < ::HTML::Proofer::Checks::Check
  def run
    @html.css('img').each do |i|
      img = Image.new i, "image", self

      # screenshot filenames should return because of terrible names
      return self.add_issue "image has a terrible filename (#{img.src})" if img.terrible_filename?

      # does the image exist?
      if img.missing_src?
        self.add_issue "image has no src attribute"
      elsif img.remote?
        return if img.ignore?
        add_to_external_urls img.src
      else
        return if img.ignore?
        self.add_issue("internal image #{img.src} does not exist") unless img.exists?
      end

      # check alt tag
      self.add_issue "image #{img.src} does not have an alt attribute" unless img.valid_alt_tag?
    end

    return external_urls
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
html-proofer-0.6.1 lib/html/proofer/checks/images.rb
html-proofer-0.6.0 lib/html/proofer/checks/images.rb
html-proofer-0.5.0 lib/html/proofer/checks/images.rb