From a0712224c685253d3ad2118a60eed11e28fb4141 Mon Sep 17 00:00:00 2001 From: Ben Hollis Date: Tue, 17 Apr 2012 23:55:28 -0700 Subject: [PATCH] Ignore unnecessary ignores and use destination_path in url --- .../lib/middleman-core/sitemap/extensions/ignores.rb | 11 ++++++++--- middleman-core/lib/middleman-core/sitemap/resource.rb | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb b/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb index 05058bbc..8001f731 100644 --- a/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb +++ b/middleman-core/lib/middleman-core/sitemap/extensions/ignores.rb @@ -46,6 +46,8 @@ module Middleman::Sitemap::Extensions # @param [String, Regexp] path, path glob expression, or path regex # @return [void] def ignore(path=nil, &block) + original_callback_size = @ignored_callbacks.size + if path.is_a? Regexp @ignored_callbacks << Proc.new {|p| p =~ path } elsif path.is_a? String @@ -53,13 +55,16 @@ module Middleman::Sitemap::Extensions if path_clean.include?("*") # It's a glob @ignored_callbacks << Proc.new {|p| File.fnmatch(path_clean, p) } else - @ignored_callbacks << Proc.new {|p| p == path_clean } + # Add a specific-path ignore unless that path is already covered + @ignored_callbacks << Proc.new {|p| p == path_clean } unless ignored?(path_clean) end elsif block_given? @ignored_callbacks << block end - @app.sitemap.rebuild_resource_list!(:added_ignore_rule) + if @ignored_callbacks.size > original_callback_size + @app.sitemap.rebuild_resource_list!(:added_ignore_rule) + end end # Whether a path is ignored @@ -78,4 +83,4 @@ module Middleman::Sitemap::Extensions end end end -end \ No newline at end of file +end diff --git a/middleman-core/lib/middleman-core/sitemap/resource.rb b/middleman-core/lib/middleman-core/sitemap/resource.rb index f93b3fdf..7832435a 100644 --- a/middleman-core/lib/middleman-core/sitemap/resource.rb +++ b/middleman-core/lib/middleman-core/sitemap/resource.rb @@ -114,7 +114,7 @@ module Middleman::Sitemap # just foo. Best for linking. # @return [String] def url - '/' + path.sub(/#{Regexp.escape(app.index_file)}$/, '') + '/' + destination_path.sub(/#{Regexp.escape(app.index_file)}$/, '') end # Get the relative path from the source