class Rack::RackSeo::Document

Attributes

desc[RW]

This is a wrapper for the Nokogiri parsed page Provides some convenience methods for working with seo meta tags

keywords[RW]

This is a wrapper for the Nokogiri parsed page Provides some convenience methods for working with seo meta tags

title[RW]

This is a wrapper for the Nokogiri parsed page Provides some convenience methods for working with seo meta tags

Public Class Methods

new(*args) click to toggle source
# File lib/rack-seo/document.rb, line 8
def new(*args)
  doc = parse(args.first)
  setup_meta_tags(doc)
end
parse(string_or_io, url = nil, encoding = 'utf-8', options = Nokogiri::XML::ParseOptions::RECOVER) click to toggle source
Calls superclass method
# File lib/rack-seo/document.rb, line 13
def parse(string_or_io, url = nil, encoding = 'utf-8', options = Nokogiri::XML::ParseOptions::RECOVER)
  super(string_or_io, url, encoding, options)
end

Private Class Methods

create_doc_head(document) click to toggle source
# File lib/rack-seo/document.rb, line 72
def create_doc_head(document)
  doc_head = Nokogiri::XML::Element.new('head', document)
  document.root.children.first.before doc_head
end
create_html_root_node(document) click to toggle source
# File lib/rack-seo/document.rb, line 68
def create_html_root_node(document)
  document.root.wrap('<html></html>')
end
create_meta_desc(document) click to toggle source
# File lib/rack-seo/document.rb, line 82
def create_meta_desc(document)
  meta_desc = Nokogiri::XML::Element.new('meta', document)
  meta_desc['name'] = "description"
  meta_desc['content'] ||= ""
  document.at('head').children.first.after meta_desc
end
create_meta_desc_content(document) click to toggle source
# File lib/rack-seo/document.rb, line 96
def create_meta_desc_content(document)
  meta_desc = document.description_tag
  meta_desc['content'] ||= ""
end
create_meta_keywords(document) click to toggle source
# File lib/rack-seo/document.rb, line 89
def create_meta_keywords(document)
  meta_keywords = Nokogiri::XML::Element.new('meta', document)
  meta_keywords['name'] = "keywords"
  meta_keywords['content'] ||= ""
  document.at('head').children.last.after meta_keywords
end
create_meta_keywords_content(document) click to toggle source
# File lib/rack-seo/document.rb, line 101
def create_meta_keywords_content(document)
  meta_keywords = document.keywords_tag
  meta_keywords['content'] ||= ""
end
create_meta_title(document) click to toggle source
# File lib/rack-seo/document.rb, line 77
def create_meta_title(document)
  meta_title = Nokogiri::XML::Element.new('title', document)
  document.at('head').add_child meta_title
end
setup_meta_tags(document) click to toggle source
# File lib/rack-seo/document.rb, line 57
def setup_meta_tags(document)
  create_html_root_node(document) unless document.root.name == "html" 
  create_doc_head(document) unless document.at_css("head")
  create_meta_title(document) unless document.at_css("title")
  create_meta_desc(document) unless document.at_css("meta[name='description']")
  create_meta_desc_content(document) unless document.at_css("meta[name='description']")['content']
  create_meta_keywords(document) unless document.at_css("meta[name='keywords']")
  create_meta_keywords_content(document) unless document.at_css("meta[name='keywords']")['keywords']
  document
end

Public Instance Methods

description_content() click to toggle source
# File lib/rack-seo/document.rb, line 34
def description_content
  self.description_tag.attr('content') unless description_tag.nil?
end
description_content=(content) click to toggle source
# File lib/rack-seo/document.rb, line 30
def description_content=(content)
  self.description_tag['content'] = content unless description_tag.nil?
end
description_tag() click to toggle source
# File lib/rack-seo/document.rb, line 38
def description_tag
  self.at_css("meta[name='description']")
end
keywords_content() click to toggle source
# File lib/rack-seo/document.rb, line 46
def keywords_content
  keywords_tag.attr('content') unless keywords_tag.nil?
end
keywords_content=(content) click to toggle source
# File lib/rack-seo/document.rb, line 42
def keywords_content=(content)
  keywords_tag['content'] = content unless keywords_tag.nil?
end
keywords_tag() click to toggle source
# File lib/rack-seo/document.rb, line 50
def keywords_tag
  self.at_css("meta[name='keywords']")
end
title_content() click to toggle source
# File lib/rack-seo/document.rb, line 18
def title_content
  self.title_tag.text
end
title_content=(content) click to toggle source
# File lib/rack-seo/document.rb, line 22
def title_content=(content)
  title_tag.content = content
end
title_tag() click to toggle source
# File lib/rack-seo/document.rb, line 26
def title_tag
  self.at('title')
end