Class: Usmu::Sitemap::SitemapFile
- Inherits:
-
Template::GeneratedFile
- Object
- Template::GeneratedFile
- Usmu::Sitemap::SitemapFile
- Defined in:
- lib/usmu/sitemap/sitemap_file.rb
Instance Method Summary collapse
-
#initialize(generator, name, metadata = {}, type = nil, content = nil) ⇒ SitemapFile
constructor
A new instance of SitemapFile.
- #render ⇒ void
- #to_url(renderable) ⇒ void
- #valid_entry?(renderable) ⇒ Boolean
Constructor Details
#initialize(generator, name, metadata = {}, type = nil, content = nil) ⇒ SitemapFile
Returns a new instance of SitemapFile.
8 9 10 11 |
# File 'lib/usmu/sitemap/sitemap_file.rb', line 8 def initialize(generator, name, = {}, type = nil, content = nil) super(nil, name, , type, content) @generator = generator end |
Instance Method Details
#render ⇒ void
13 14 15 16 17 18 19 20 21 22 23 |
# 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) ⇒ void
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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) ⇒ Boolean
25 26 27 28 29 30 |
# File 'lib/usmu/sitemap/sitemap_file.rb', line 25 def valid_entry?(renderable) = renderable['sitemap', 'include'] return unless .nil? !renderable.class.equal? Template::StaticFile end |