Module: Html::Test::UrlSelector

Included in:
LinkValidator, UrlChecker
Defined in:
lib/url_selector.rb

Instance Method Summary collapse

Instance Method Details

#anchor_urlsObject



36
37
38
# File 'lib/url_selector.rb', line 36

def anchor_urls
  select("a").map { |l| l.attributes['href'] }
end

#external_http?(url, root_url = nil) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
19
20
21
22
# File 'lib/url_selector.rb', line 16

def external_http?(url, root_url = nil)
  if root_url
    http_protocol?(url) && !url.starts_with?(root_url)
  else
    http_protocol?(url)
  end
end

#form_urlsObject



44
45
46
# File 'lib/url_selector.rb', line 44

def form_urls
  select("form").map { |i| i.attributes['action'] }        
end

#has_protocol?(url) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/url_selector.rb', line 28

def has_protocol?(url)
  url =~ %r{^[a-z]+://} ? true : false
end

#http_protocol?(url) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/url_selector.rb', line 24

def http_protocol?(url)
  url =~ %r{^http(?:s)?://} ? true : false
end

#image_urlsObject



40
41
42
# File 'lib/url_selector.rb', line 40

def image_urls
  select("img").map { |i| i.attributes['src'] }
end

#response_bodyObject



48
49
50
# File 'lib/url_selector.rb', line 48

def response_body
  self.respond_to?(:response) ? response.body : @response.body
end

#select(pattern) ⇒ Object



52
53
54
# File 'lib/url_selector.rb', line 52

def select(pattern)
  HTML::Selector.new(pattern).select(HTML::Document.new(response_body).root)
end

#skip_url?(url, root_url = nil) ⇒ Boolean

Returns:

  • (Boolean)


4
5
6
7
8
9
10
# File 'lib/url_selector.rb', line 4

def skip_url?(url, root_url = nil)
  if url.blank? || unsupported_protocol?(url) || special_url?(url)
    true
  else
    false
  end
end

#special_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/url_selector.rb', line 12

def special_url?(url)
  [/^javascript:/, /^mailto:/, /^\#$/].any? { |pattern| url =~ pattern }
end

#unsupported_protocol?(url) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/url_selector.rb', line 32

def unsupported_protocol?(url)
  has_protocol?(url) && !http_protocol?(url)
end