From ab77cb2f3479d6841d82bbcae55cca49939e65ec Mon Sep 17 00:00:00 2001 From: Ben Hollis Date: Mon, 23 Apr 2012 01:16:03 -0700 Subject: [PATCH] Add an "origin" parameter to provides_metadata to allow for replacing metadata callbacks rather than always appending --- .../lib/middleman-core/sitemap/store.rb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/middleman-core/lib/middleman-core/sitemap/store.rb b/middleman-core/lib/middleman-core/sitemap/store.rb index d6ba9fb5..96faf607 100644 --- a/middleman-core/lib/middleman-core/sitemap/store.rb +++ b/middleman-core/lib/middleman-core/sitemap/store.rb @@ -113,10 +113,22 @@ module Middleman::Sitemap # Register a handler to provide metadata on a url path # @param [Regexp] matcher + # @param [Symbol] origin an indicator of where this metadata came from - only one + # block per [matcher, origin] pair may exist. # @return [Array>] - def provides_metadata_for_path(matcher=nil, &block) + def provides_metadata_for_path(matcher=nil, origin=nil, &block) @_provides_metadata_for_path ||= [] - @_provides_metadata_for_path << [block, matcher] if block_given? + if block_given? + if origin + existing_provider = @_provides_metadata_for_path.find {|b,m,o| o == origin && m == matcher} + end + + if existing_provider + existing_provider[0] = block + else + @_provides_metadata_for_path << [block, matcher, origin] + end + end @_provides_metadata_for_path end @@ -188,4 +200,4 @@ module Middleman::Sitemap path end end -end \ No newline at end of file +end