class SLA::Checker

Attributes

check_external[R]
ignore[R]
max_depth[R]

Public Class Methods

new(max_depth: 5, ignore: nil, check_external: false) click to toggle source
# File lib/sla/checker.rb, line 5
def initialize(max_depth: 5, ignore: nil, check_external: false)
  @max_depth = max_depth
  @ignore = ignore
  @check_external = check_external
end

Public Instance Methods

check(page) { |:source, page| ... } click to toggle source
# File lib/sla/checker.rb, line 11
def check(page, &block)
  return if skip? page

  yield [:source, page] if block_given?

  pages = page_list page

  pages.each do |page|
    if checked.has_key? page.url or ignore? page
      yield [:skip, page] if block_given?
    else
      checked[page.url] = true
      yield [:check, page] if block_given?
    end
  end

  pages.each do |page|
    next if deeply_checked.has_key? page.url
    deeply_checked[page.url] = true
    next if page.external?
    check page, &block
  end
end

Private Instance Methods

checked() click to toggle source
# File lib/sla/checker.rb, line 63
def checked
  @checked ||= {}
end
deeply_checked() click to toggle source
# File lib/sla/checker.rb, line 59
def deeply_checked
  @deeply_checked ||= {}
end
ignore?(page) click to toggle source
# File lib/sla/checker.rb, line 49
def ignore?(page)
  return false unless ignore

  ignore.each do |text|
    return true if page.url.include? text
  end

  false
end
page_list(page) click to toggle source
# File lib/sla/checker.rb, line 37
def page_list(page)
  if check_external
    page.pages
  else
    page.pages.reject { |page| page.external? }
  end
end
skip?(page) click to toggle source
# File lib/sla/checker.rb, line 45
def skip?(page)
  ignore?(page) or page.depth >= max_depth or !page.valid?
end