File: path-manager.rb

package info (click to toggle)
jekyll 4.3.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,356 kB
  • sloc: ruby: 16,765; javascript: 1,455; sh: 214; xml: 29; makefile: 9
file content (65 lines) | stat: -rw-r--r-- 1,695 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# frozen_string_literal: true

require 'benchmark/ips'
require 'jekyll'

class FooPage
  def initialize(dir:, name:)
    @dir = dir
    @name = name
  end

  def slow_path
    File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r!\A/!, "")
  end

  def fast_path
    Jekyll::PathManager.join(@dir, @name).sub(%r!\A/!, "")
  end
end

nil_page     = FooPage.new(:dir => nil, :name => nil)
empty_page   = FooPage.new(:dir => "", :name => "")
root_page    = FooPage.new(:dir => "", :name => "ipsum.md")
nested_page  = FooPage.new(:dir => "lorem", :name => "ipsum.md")
slashed_page = FooPage.new(:dir => "/lorem/", :name => "/ipsum.md")

if nil_page.slow_path == nil_page.fast_path
  Benchmark.ips do |x|
    x.report('nil_page slow') { nil_page.slow_path }
    x.report('nil_page fast') { nil_page.fast_path }
    x.compare!
  end
end

if empty_page.slow_path == empty_page.fast_path
  Benchmark.ips do |x|
    x.report('empty_page slow') { empty_page.slow_path }
    x.report('empty_page fast') { empty_page.fast_path }
    x.compare!
  end
end

if root_page.slow_path == root_page.fast_path
  Benchmark.ips do |x|
    x.report('root_page slow') { root_page.slow_path }
    x.report('root_page fast') { root_page.fast_path }
    x.compare!
  end
end

if nested_page.slow_path == nested_page.fast_path
  Benchmark.ips do |x|
    x.report('nested_page slow') { nested_page.slow_path }
    x.report('nested_page fast') { nested_page.fast_path }
    x.compare!
  end
end

if slashed_page.slow_path == slashed_page.fast_path
  Benchmark.ips do |x|
    x.report('slashed_page slow') { slashed_page.slow_path }
    x.report('slashed_page fast') { slashed_page.fast_path }
    x.compare!
  end
end