class Usmu::Sitemap::SitemapFile
Public Class Methods
new(generator, name, metadata = {}, type = nil, content = nil)
click to toggle source
Calls superclass method
# File lib/usmu/sitemap/sitemap_file.rb, line 8 def initialize(generator, name, metadata = {}, type = nil, content = nil) super(nil, name, metadata, type, content) @generator = generator end
Public Instance Methods
render()
click to toggle source
# File lib/usmu/sitemap/sitemap_file.rb, line 13 def render doc = Ox::Document.new(version: '1.0', encoding: 'UTF-8') urlset = Ox::Element.new('urlset') urlset[:xmlns] = 'http://www.sitemaps.org/schemas/sitemap/0.9' @generator.renderables.select(&method(:valid_entry?)).map(&method(:to_url)).each {|url| urlset << url } doc << urlset "<?xml version=\"1.0\" encoding=\"UTF-8\"?>#{Ox.to_xml(doc, effort: :strict)}" end
to_url(renderable)
click to toggle source
# File lib/usmu/sitemap/sitemap_file.rb, line 32 def to_url(renderable) url = Ox::Element.new('url') url << (Ox::Element.new('loc') << self['base url', default: '/'] + renderable.output_filename) url << (Ox::Element.new('lastmod') << Time.at(renderable.mtime).utc.iso8601) change_frequency = renderable['sitemap', 'change frequency', default: self['change frequency']] if change_frequency && !(%w{always hourly daily weekly monthly yearly never}.include? change_frequency) raise "Invalid change frequency '#{change_frequency}' for #{renderable.output_filename}" end url << (Ox::Element.new('changefreq') << change_frequency) if change_frequency priority = renderable['sitemap', 'priority', default: self['priority']] if priority && !(priority.is_a?(Float) && priority >= 0 && priority <= 1) raise "Invalid priority '#{priority}' for #{renderable.output_filename}" end url << (Ox::Element.new('priority') << priority.to_s) if priority url end
valid_entry?(renderable)
click to toggle source
# File lib/usmu/sitemap/sitemap_file.rb, line 25 def valid_entry?(renderable) meta = renderable['sitemap', 'include'] return meta unless meta.nil? !renderable.class.equal? Template::StaticFile end