class HTMLProofer::Check

Mostly handles issue management and collecting of external URLs.

def add_failure(description, element: nil, line: nil, status: nil, content: nil)

def add_failure(description, element: nil, line: nil, status: nil, content: nil)
  @failures << Failure.new(
    @runner.current_filename,
    short_name,
    description,
    line: element.nil? ? line : element.line,
    status: status,
    content: element.nil? ? content : element.content,
  )
end

def add_to_external_urls(url, line)

def add_to_external_urls(url, line)
  url_string = url.to_s
  @external_urls[url_string] = [] if @external_urls[url_string].nil?
  @external_urls[url_string] << { filename: url.filename, line: line }
end

def add_to_internal_urls(url, line)

def add_to_internal_urls(url, line)
  url_string = url.raw_attribute
  @internal_urls[url_string] = [] if @internal_urls[url_string].nil?
  metadata = {
    source: url.source,
    filename: url.filename,
    line: line,
    base_url: base_url,
    found: false,
  }
  @internal_urls[url_string] << metadata
end

def base_url

def base_url
 @base_url if defined?(@base_url)
 (@base_url = "") if (base = @html.at_css("base")).nil?
url = base["href"]

def create_element(node)

def create_element(node)
  Element.new(@runner, node, base_url: base_url)
end

def initialize(runner, html)

def initialize(runner, html)
  @runner = runner
  @html   = remove_ignored(html)
  @external_urls = {}
  @internal_urls = {}
  @failures = []
end

def remove_ignored(html)

def remove_ignored(html)
 if html.nil?
ss("code, pre, tt").each(&:unlink)

def run

def run
  raise NotImplementedError, "HTMLProofer::Check subclasses must implement #run"
end

def short_name

def short_name
  self.class.name.split("::").last
end

def short_name

def short_name
  name.split("::").last
end

def subchecks(runner_options)

def subchecks(runner_options)
  # grab all known checks
  checks = ObjectSpace.each_object(Class).select do |klass|
    klass < self
  end
  # remove any checks not explicitly included
  checks.each_with_object([]) do |check, arr|
    next unless runner_options[:checks].include?(check.short_name)
    arr << check
  end
end