Merge pull request #4168 from jekyll/pr/cleanup-url-sanitize

Slightly speed up url sanitization and handle multiples of ///.
This commit is contained in:
Jordon Bedwell 2015-11-19 19:26:31 -06:00
commit 275aea11d1
1 changed files with 4 additions and 13 deletions

View File

@ -70,20 +70,11 @@ module Jekyll
end end
end end
# Returns a sanitized String URL # Returns a sanitized String URL, stripping "../../" and multiples of "/",
def sanitize_url(in_url) # as well as the beginning "/" so we can enforce and ensure it.
url = in_url \
# Remove all double slashes
.gsub(/\/\//, '/') \
# Remove every URL segment that consists solely of dots
.split('/').reject{ |part| part =~ /^\.+$/ }.join('/') \
# Always add a leading slash
.gsub(/\A([^\/])/, '/\1')
# Append a trailing slash to the URL if the unsanitized URL had one def sanitize_url(str)
url << "/" if in_url.end_with?("/") "/" + str.gsub(/\/{2,}/, "/").gsub(%r!\.+\/|\A/+!, "")
url
end end
# Escapes a path to be a valid URL path segment # Escapes a path to be a valid URL path segment