Use Addressable to better deal with i18n URLs
This commit is contained in:
parent
aebf711c61
commit
2b30c06140
|
@ -38,4 +38,5 @@ Gem::Specification.new do |s|
|
||||||
s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0')
|
s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0')
|
||||||
s.add_runtime_dependency('jekyll-watch', '~> 1.1')
|
s.add_runtime_dependency('jekyll-watch', '~> 1.1')
|
||||||
s.add_runtime_dependency("pathutil", "~> 0.9")
|
s.add_runtime_dependency("pathutil", "~> 0.9")
|
||||||
|
s.add_runtime_dependency('addressable', '~> 2.4')
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
require "addressable/uri"
|
||||||
|
|
||||||
module Jekyll
|
module Jekyll
|
||||||
module Filters
|
module Filters
|
||||||
module URLFilters
|
module URLFilters
|
||||||
|
@ -10,7 +12,7 @@ module Jekyll
|
||||||
return if input.nil?
|
return if input.nil?
|
||||||
site = @context.registers[:site]
|
site = @context.registers[:site]
|
||||||
return relative_url(input).to_s if site.config["url"].nil?
|
return relative_url(input).to_s if site.config["url"].nil?
|
||||||
URI(site.config["url"] + relative_url(input)).to_s
|
Addressable::URI.parse(site.config["url"] + relative_url(input)).normalize.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
# Produces a URL relative to the domain root based on site.baseurl.
|
# Produces a URL relative to the domain root based on site.baseurl.
|
||||||
|
@ -22,9 +24,9 @@ module Jekyll
|
||||||
return if input.nil?
|
return if input.nil?
|
||||||
site = @context.registers[:site]
|
site = @context.registers[:site]
|
||||||
return ensure_leading_slash(input.to_s) if site.config["baseurl"].nil?
|
return ensure_leading_slash(input.to_s) if site.config["baseurl"].nil?
|
||||||
URI(
|
Addressable::URI.parse(
|
||||||
ensure_leading_slash(site.config["baseurl"]) + ensure_leading_slash(input.to_s)
|
ensure_leading_slash(site.config["baseurl"]) + ensure_leading_slash(input.to_s)
|
||||||
).to_s
|
).normalize.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -397,7 +397,7 @@ class TestFilters < JekyllUnitTest
|
||||||
|
|
||||||
should "normalize international URLs" do
|
should "normalize international URLs" do
|
||||||
page_url = "错误.html"
|
page_url = "错误.html"
|
||||||
assert_equal "%E9%94%99%E8%AF%AF.html", @filter.relative_url(page_url)
|
assert_equal "/base/%E9%94%99%E8%AF%AF.html", @filter.relative_url(page_url)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "be ok with a nil 'baseurl'" do
|
should "be ok with a nil 'baseurl'" do
|
||||||
|
|
Loading…
Reference in New Issue