class MetaInfo::Document

Public Class Methods

new(html) click to toggle source
# File lib/meta_info/document.rb, line 5
def initialize(html)
  raise MetaInfo::Exception::NoHTML if html.nil? || html.empty?
  @doc = Nokogiri::HTML.parse(html)
end

Public Instance Methods

description() click to toggle source
# File lib/meta_info/document.rb, line 18
def description
  get_attr("description") || meta_description
end
doc() click to toggle source
# File lib/meta_info/document.rb, line 10
def doc
  @doc
end
get_attr(name) click to toggle source
# File lib/meta_info/document.rb, line 50
def get_attr(name)
  og_attr(name) || twitter_attr(name)
end
image() click to toggle source
# File lib/meta_info/document.rb, line 22
def image
  get_attr("image")
end
meta_description() click to toggle source
# File lib/meta_info/document.rb, line 30
def meta_description
  search_meta("name", /^description$/i, "content")
end
meta_title() click to toggle source
# File lib/meta_info/document.rb, line 42
def meta_title
  if doc.css("title").empty?
    return false
  else
    return doc.css("title")[0].text
  end
end
og_attr(name) click to toggle source
# File lib/meta_info/document.rb, line 38
def og_attr(name)
  search_meta('property', /^og:#{name}$/i, 'content')
end
search_meta(attribute, regexp, value_key) click to toggle source
# File lib/meta_info/document.rb, line 54
def search_meta(attribute, regexp, value_key)
  doc.css('meta').each do |m|
    if m.attribute(attribute) && m.attribute(attribute).to_s.match(regexp)
      return m.attribute(value_key).to_s
    end
  end
  return false
end
title() click to toggle source
# File lib/meta_info/document.rb, line 14
def title
  get_attr("title") || meta_title
end
twitter_attr(name) click to toggle source
# File lib/meta_info/document.rb, line 34
def twitter_attr(name)
  search_meta('name', /^twitter:#{name}$/i, 'content')
end
valid?() click to toggle source
# File lib/meta_info/document.rb, line 26
def valid?
  title && description != false
end