Always normalize the result of the relative_url filter (#6185)
Merge pull request 6185
This commit is contained in:
parent
b089e44016
commit
9f7815786b
|
@ -23,9 +23,9 @@ module Jekyll
|
||||||
# Returns a URL relative to the domain root as a String.
|
# Returns a URL relative to the domain root as a String.
|
||||||
def relative_url(input)
|
def relative_url(input)
|
||||||
return if input.nil?
|
return if input.nil?
|
||||||
return ensure_leading_slash(input.to_s) if sanitized_baseurl.nil?
|
parts = [sanitized_baseurl, input]
|
||||||
Addressable::URI.parse(
|
Addressable::URI.parse(
|
||||||
ensure_leading_slash(sanitized_baseurl) + ensure_leading_slash(input.to_s)
|
parts.compact.map { |part| ensure_leading_slash(part.to_s) }.join
|
||||||
).normalize.to_s
|
).normalize.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -491,6 +491,15 @@ class TestFilters < JekyllUnitTest
|
||||||
})
|
})
|
||||||
assert_equal "/", filter.relative_url(page_url)
|
assert_equal "/", filter.relative_url(page_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "not return the url by reference" do
|
||||||
|
filter = make_filter_mock({ :baseurl => nil })
|
||||||
|
page = Page.new(filter.site, test_dir("fixtures"), "", "front_matter.erb")
|
||||||
|
assert_equal "/front_matter.erb", page.url
|
||||||
|
url = filter.relative_url(page.url)
|
||||||
|
url << "foo"
|
||||||
|
assert_equal "/front_matter.erb", page.url
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "strip_index filter" do
|
context "strip_index filter" do
|
||||||
|
|
Loading…
Reference in New Issue