2012-05-07 23:41:39 +02:00
|
|
|
require "middleman-core/sitemap/store"
|
|
|
|
require "middleman-core/sitemap/resource"
|
|
|
|
|
|
|
|
require "middleman-core/sitemap/extensions/on_disk"
|
|
|
|
require "middleman-core/sitemap/extensions/proxies"
|
|
|
|
require "middleman-core/sitemap/extensions/ignores"
|
|
|
|
|
2012-04-04 19:26:07 +02:00
|
|
|
# Core Sitemap Extensions
|
2012-05-07 23:41:39 +02:00
|
|
|
module Middleman
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
module Sitemap
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Setup Extension
|
|
|
|
class << self
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Once registered
|
|
|
|
def registered(app)
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
app.register Middleman::Sitemap::Extensions::Proxies
|
|
|
|
app.register Middleman::Sitemap::Extensions::Ignores
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-06-20 05:07:50 +02:00
|
|
|
# Set to automatically convert some characters into a directory
|
|
|
|
app.set :automatic_directory_matcher, nil
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Setup callbacks which can exclude paths from the sitemap
|
|
|
|
app.set :ignored_sitemap_matchers, {
|
|
|
|
# dotfiles and folders in the root
|
2012-07-19 10:17:50 +02:00
|
|
|
:root_dotfiles => proc { |file| file.match(%r{^\.}) },
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Files starting with an dot, but not .htaccess
|
2012-08-14 00:39:06 +02:00
|
|
|
:source_dotfiles => proc { |file|
|
2013-01-19 02:13:49 +01:00
|
|
|
file.match(%r{/\.}) && !file.match(%r{/\.htaccess|\.htpasswd})
|
2012-05-07 23:41:39 +02:00
|
|
|
},
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Files starting with an underscore, but not a double-underscore
|
2012-07-19 10:17:50 +02:00
|
|
|
:partials => proc { |file| file.match(%r{/_}) && !file.match(%r{/__}) },
|
2012-08-14 00:39:06 +02:00
|
|
|
|
|
|
|
:layout => proc { |file|
|
2012-07-19 10:17:50 +02:00
|
|
|
file.match(%r{^source/layout\.}) || file.match(%r{^source/layouts/})
|
|
|
|
}
|
2012-05-07 23:41:39 +02:00
|
|
|
}
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Include instance methods
|
|
|
|
app.send :include, InstanceMethods
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Initialize Sitemap
|
|
|
|
app.before_configuration do
|
|
|
|
sitemap
|
|
|
|
end
|
2012-04-04 19:26:07 +02:00
|
|
|
end
|
2012-05-07 23:41:39 +02:00
|
|
|
alias :included :registered
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Sitemap instance methods
|
|
|
|
module InstanceMethods
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Get the sitemap class instance
|
|
|
|
# @return [Middleman::Sitemap::Store]
|
|
|
|
def sitemap
|
|
|
|
@_sitemap ||= Store.new(self)
|
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Get the resource object for the current path
|
|
|
|
# @return [Middleman::Sitemap::Resource]
|
|
|
|
def current_page
|
|
|
|
current_resource
|
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
# Get the resource object for the current path
|
|
|
|
# @return [Middleman::Sitemap::Resource]
|
|
|
|
def current_resource
|
|
|
|
sitemap.find_resource_by_destination_path(current_path)
|
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2012-05-07 23:41:39 +02:00
|
|
|
end
|
2012-04-04 19:26:07 +02:00
|
|
|
end
|
2012-07-19 10:17:50 +02:00
|
|
|
end
|