From e92dd2055dd0e64dff66a6ec58ed3dce5b7af5bb Mon Sep 17 00:00:00 2001 From: fen Date: Wed, 2 Nov 2016 21:30:23 +0100 Subject: [PATCH] check for the urldrop key first --- lib/jekyll/drops/url_drop.rb | 5 +++++ lib/jekyll/url.rb | 11 +++++------ test/test_url.rb | 11 ++++++----- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/jekyll/drops/url_drop.rb b/lib/jekyll/drops/url_drop.rb index 04e48a206..5c97190da 100644 --- a/lib/jekyll/drops/url_drop.rb +++ b/lib/jekyll/drops/url_drop.rb @@ -78,6 +78,11 @@ module Jekyll def y_day @obj.date.strftime("%j") end + + private + def fallback_data + {} + end end end end diff --git a/lib/jekyll/url.rb b/lib/jekyll/url.rb index 32bcfb8f6..291f6e586 100644 --- a/lib/jekyll/url.rb +++ b/lib/jekyll/url.rb @@ -86,15 +86,14 @@ module Jekyll def generate_url_from_drop(template) template.gsub(%r!:([a-z_]+)!) do |match| - begin - replacement = @placeholders.public_send(match.sub(":".freeze, "".freeze)) - rescue NoMethodError - Jekyll.logger.warn "", "#{match} is not defined!" + key = match.sub(":".freeze, "".freeze) + unless @placeholders.key?(key) + raise NoMethodError, "The URL template key #{key} doesn't exist!" end - if replacement.nil? + if @placeholders[key].nil? "".freeze else - self.class.escape_path(replacement) + self.class.escape_path(@placeholders[key]) end end.gsub(%r!//!, "/".freeze) end diff --git a/test/test_url.rb b/test/test_url.rb index 28fab43d5..1a4471162 100644 --- a/test/test_url.rb +++ b/test/test_url.rb @@ -93,11 +93,12 @@ class TestURL < JekyllUnitTest matching_doc = site.collections["methods"].docs.find do |doc| doc.relative_path == "_methods/escape-+ #%20[].md" end - URL.new( - :template => "/methods/:title/:headline", - :placeholders => matching_doc.url_placeholders - ).to_s - pass + assert_raises NoMethodError do + URL.new( + :template => "/methods/:headline", + :placeholders => matching_doc.url_placeholders + ).to_s + end end end end