55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
#!/usr/bin/env ruby
|
|
require 'benchmark/ips'
|
|
|
|
# For this pull request, which changes Page#dir
|
|
# https://github.com/jekyll/jekyll/pull/4403
|
|
|
|
FORWARD_SLASH = '/'.freeze
|
|
|
|
def pre_pr(url)
|
|
url[-1, 1] == FORWARD_SLASH ? url : File.dirname(url)
|
|
end
|
|
|
|
def pr(url)
|
|
if url.end_with?(FORWARD_SLASH)
|
|
url
|
|
else
|
|
url_dir = File.dirname(url)
|
|
url_dir.end_with?(FORWARD_SLASH) ? url_dir : "#{url_dir}/"
|
|
end
|
|
end
|
|
|
|
def envygeeks(url)
|
|
return url if url.end_with?(FORWARD_SLASH) || url == FORWARD_SLASH
|
|
|
|
url = File.dirname(url)
|
|
url == FORWARD_SLASH ? url : "#{url}/"
|
|
end
|
|
|
|
# Just a slash
|
|
Benchmark.ips do |x|
|
|
path = '/'
|
|
x.report("pre_pr:#{path}") { pre_pr(path) }
|
|
x.report("pr:#{path}") { pr(path) }
|
|
x.report("envygeeks:#{path}") { pr(path) }
|
|
x.compare!
|
|
end
|
|
|
|
# No trailing slash
|
|
Benchmark.ips do |x|
|
|
path = '/some/very/very/long/path/to/a/file/i/like'
|
|
x.report("pre_pr:#{path}") { pre_pr(path) }
|
|
x.report("pr:#{path}") { pr(path) }
|
|
x.report("envygeeks:#{path}") { pr(path) }
|
|
x.compare!
|
|
end
|
|
|
|
# No trailing slash
|
|
Benchmark.ips do |x|
|
|
path = '/some/very/very/long/path/to/a/file/i/like/'
|
|
x.report("pre_pr:#{path}") { pre_pr(path) }
|
|
x.report("pr:#{path}") { pr(path) }
|
|
x.report("envygeeks:#{path}") { pr(path) }
|
|
x.compare!
|
|
end
|