diff --git a/lib/jekyll/filters/url_filters.rb b/lib/jekyll/filters/url_filters.rb index 5bae1b17..151c4e71 100644 --- a/lib/jekyll/filters/url_filters.rb +++ b/lib/jekyll/filters/url_filters.rb @@ -12,9 +12,9 @@ module Jekyll # Returns the absolute URL as a String. def absolute_url(input) return if input.nil? - return input if Addressable::URI.parse(input).absolute? + return input if Addressable::URI.parse(input.to_s).absolute? site = @context.registers[:site] - return relative_url(input).to_s if site.config["url"].nil? + return relative_url(input) if site.config["url"].nil? Addressable::URI.parse( site.config["url"].to_s + relative_url(input) ).normalize.to_s diff --git a/test/test_filters.rb b/test/test_filters.rb index cb95a644..0499b73c 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -440,6 +440,10 @@ class TestFilters < JekyllUnitTest filter = make_filter_mock({ "url" => Value.new(proc { "http://example.org" }) }) assert_equal "http://example.org#{page_url}", filter.absolute_url(page_url) end + + should "not raise a TypeError when passed a hash" do + assert @filter.absolute_url({ "foo" => "bar" }) + end end context "relative_url filter" do