2011-11-21 02:05:29 +01:00
|
|
|
require "active_support/core_ext/hash/deep_merge"
|
2011-11-08 02:58:07 +01:00
|
|
|
require 'find'
|
|
|
|
|
2011-11-08 07:34:02 +01:00
|
|
|
module Middleman::CoreExtensions::Sitemap
|
|
|
|
class << self
|
|
|
|
def registered(app)
|
2011-11-18 09:34:56 +01:00
|
|
|
app.send :include, InstanceMethods
|
2011-11-08 02:58:07 +01:00
|
|
|
end
|
2011-11-08 07:34:02 +01:00
|
|
|
alias :included :registered
|
|
|
|
end
|
|
|
|
|
2011-11-18 09:34:56 +01:00
|
|
|
module InstanceMethods
|
|
|
|
def initialize
|
2011-11-28 07:04:19 +01:00
|
|
|
super
|
2011-12-01 05:04:23 +01:00
|
|
|
|
|
|
|
file_changed %r{^source/} do |file|
|
2011-11-18 09:34:56 +01:00
|
|
|
sitemap.touch_file(file)
|
|
|
|
end
|
2011-12-01 05:04:23 +01:00
|
|
|
|
|
|
|
file_deleted %r{^source/} do |file|
|
2011-11-18 09:34:56 +01:00
|
|
|
sitemap.remove_file(file)
|
|
|
|
end
|
2011-11-10 06:19:11 +01:00
|
|
|
end
|
2011-11-18 09:34:56 +01:00
|
|
|
|
2011-11-10 06:19:11 +01:00
|
|
|
def sitemap
|
2011-11-21 02:05:29 +01:00
|
|
|
@sitemap ||= ::Middleman::Sitemap::Store.new(self)
|
2011-11-10 06:19:11 +01:00
|
|
|
end
|
|
|
|
|
2011-11-09 00:38:15 +01:00
|
|
|
# Keep a path from building
|
|
|
|
def ignore(path)
|
2011-11-20 22:48:28 +01:00
|
|
|
sitemap.ignore(path)
|
2011-11-09 01:04:53 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def reroute(url, target)
|
2011-11-20 22:48:28 +01:00
|
|
|
sitemap.proxy(url, target)
|
2011-11-09 00:38:15 +01:00
|
|
|
end
|
2011-11-18 09:34:56 +01:00
|
|
|
|
|
|
|
def provides_metadata(matcher=nil, &block)
|
|
|
|
@_provides_metadata ||= []
|
|
|
|
@_provides_metadata << [block, matcher] if block_given?
|
|
|
|
@_provides_metadata
|
|
|
|
end
|
2011-11-09 00:38:15 +01:00
|
|
|
end
|
2011-11-08 02:58:07 +01:00
|
|
|
end
|