class Middleman::SitemapXmlGenerator::Extension
Constants
- TEMPLATES_DIR
Public Class Methods
new(app, options_hash={}, &block)
click to toggle source
Calls superclass method
# File lib/middleman-sitemap-xml-generator/extension.rb, line 18 def initialize(app, options_hash={}, &block) super require 'builder' end
Public Instance Methods
after_configuration()
click to toggle source
Hooks
# File lib/middleman-sitemap-xml-generator/extension.rb, line 32 def after_configuration register_extension_templates prepare_extra_ext_opt prepare_discard_ext_opt watch_vendor_directory end
manipulate_resource_list(resources)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 39 def manipulate_resource_list(resources) resources << sitemap_resource end
process_changefreq(path)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 52 def process_changefreq(path) default = options.default_changefreq options.process_changefreq ? options.process_changefreq.call(path, default) : default end
process_priority(path)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 57 def process_priority(path) default = options.default_priority options.process_priority ? options.process_priority.call(path, default) : default end
process_url(path)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 62 def process_url(path) path = process_extension path options.process_url ? options.process_url.call(path) : path end
resource_in_sitemap?(resource)
click to toggle source
Helpers
# File lib/middleman-sitemap-xml-generator/extension.rb, line 48 def resource_in_sitemap?(resource) is_page?(resource) && not_excluded?(resource) end
resources_for_sitemap()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 68 def resources_for_sitemap sitemap.resources.select do |resource| extensions[:sitemap_xml_generator].resource_in_sitemap?(resource) end end
Private Instance Methods
allowed_ext?(resource)
click to toggle source
Internals
# File lib/middleman-sitemap-xml-generator/extension.rb, line 82 def allowed_ext?(resource) options.extra_ext.include? File.extname(resource.path) end
filter_valid_extension(value)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 86 def filter_valid_extension(value) [value].flatten.select { |ext| ext.match /^\.[^.]+/ } end
generate_processor(method_name)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 90 def generate_processor(method_name) self.class.instance_method(method_name.to_sym).bind(self) end
is_page?(resource)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 94 def is_page?(resource) resource.path.end_with?(page_ext) || allowed_ext?(resource) end
not_excluded?(resource)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 98 def not_excluded?(resource) !resource.ignored? \ && !resource.data[options.exclude_attr] && !options.exclude_if.call(resource) end
page_ext()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 103 def page_ext File.extname(app.index_file) end
prepare_discard_ext_opt()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 111 def prepare_discard_ext_opt options.discard_ext = filter_valid_extension options.discard_ext end
prepare_extra_ext_opt()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 107 def prepare_extra_ext_opt options.extra_ext = filter_valid_extension options.extra_ext end
process_extension(path)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 115 def process_extension(path) target_ext = File.extname path if options.discard_ext.include?(target_ext) path = File.join(File.dirname(path), File.basename(path, target_ext)) end path end
register_extension_templates()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 123 def register_extension_templates # We call reload_path to register the templates directory with Middleman. # The path given to app.files must be relative to the Middleman site's root. templates_dir_relative_from_root = \ Pathname(TEMPLATES_DIR).relative_path_from(Pathname(app.root)) app.files.reload_path(templates_dir_relative_from_root) end
sitemap_locals()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 131 def sitemap_locals { url_proc: generate_processor(:process_url), changefreq_proc: generate_processor(:process_changefreq), priority_proc: generate_processor(:process_priority) } end
sitemap_resource()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 139 def sitemap_resource source_file = template('sitemap.xml.builder') ::Middleman::Sitemap::Resource.new(app.sitemap, sitemap_xml_path, source_file).tap do |res| res.add_metadata(options: { layout: false }, locals: sitemap_locals) end end
sitemap_xml_path()
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 147 def sitemap_xml_path options.sitemap_xml_path end
template(path)
click to toggle source
# File lib/middleman-sitemap-xml-generator/extension.rb, line 151 def template(path) full_path = File.join(TEMPLATES_DIR, path) raise "Template #{full_path} not found" if !File.exist?(full_path) full_path end
watch_vendor_directory()
click to toggle source
Workaround for the template reference issue. See below:
https://github.com/Aupajo/middleman-search_engine_sitemap/issues/5 https://github.com/Aupajo/middleman-search_engine_sitemap/issues/2#issuecomment-46701165
# File lib/middleman-sitemap-xml-generator/extension.rb, line 160 def watch_vendor_directory app.config[:file_watcher_ignore] = (app.config[:file_watcher_ignore].reject do |regexp| regexp == /^vendor(\/|$)/ end) end