Class: Hangry::CanonicalUrlParser

Inherits:
Object
  • Object
show all
Defined in:
lib/hangry/canonical_url_parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(html_or_nokogiri_doc) ⇒ CanonicalUrlParser

Returns a new instance of CanonicalUrlParser.



6
7
8
9
10
11
12
13
14
15
# File 'lib/hangry/canonical_url_parser.rb', line 6

def initialize(html_or_nokogiri_doc)
  self.nokogiri_doc = case html_or_nokogiri_doc
  when String
    Nokogiri::HTML(html_or_nokogiri_doc)
  when Nokogiri::HTML::Document
    html_or_nokogiri_doc
  else
    raise ArgumentError
  end
end

Instance Attribute Details

#nokogiri_docObject

Returns the value of attribute nokogiri_doc.



4
5
6
# File 'lib/hangry/canonical_url_parser.rb', line 4

def nokogiri_doc
  @nokogiri_doc
end

Instance Method Details

#canonical_domainObject



17
18
19
# File 'lib/hangry/canonical_url_parser.rb', line 17

def canonical_domain
  canonical_url ? URI.parse(canonical_url).host : nil
end

#canonical_urlObject



21
22
23
24
25
26
27
28
# File 'lib/hangry/canonical_url_parser.rb', line 21

def canonical_url
  node = nokogiri_doc.css('link[rel="canonical"]').first
  return node['href'] if node

  # Fall back to open graph URL (see food network example)
  node = nokogiri_doc.css('meta[property="og:url"]').first
  node ? node['content'] : nil
end