jekyll-shorts 0.0.5 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 075333a0c5c258bde795e1bbf517d836e05c704f30036a7781fd0d88873acb6b
4
- data.tar.gz: 8d19ee30aa6547623b58b6b230b44fbf0952e83b034a40a1d856fec05b660e16
3
+ metadata.gz: 5274421350720698e2b1b121d2b1172e7353ed3ee272448a0f4770ce1de2cb9c
4
+ data.tar.gz: 438e0496e14abf79ac5a528f612b9063eb5eaada237c8b2a242f9420b4cc06c9
5
5
  SHA512:
6
- metadata.gz: f72f406ff8aabaede20f7203853c76a9d8d4809b82d1b93e4414784f69a331bfee308f18a951526e7e1260e8477c6f5a0c5435cc0c56709327f5f533a930e8fd
7
- data.tar.gz: bb12ffc8a185eb2bb4de450434015d86761786daa2da87fe16ed689842aaf70046e7833d4809fcc8557a59c2ff9d8ffdab064be9425df7c57c48effc4bd1f925
6
+ metadata.gz: 9a002a9b9801913f4d69244374d23dc2c2516ce007e61fc60714822fff0e3f5d5e4c7c58b0cda3beeb29e2b21831e1c553f7aa98c2abe5216f066769e2b974e6
7
+ data.tar.gz: 3b31fad918a945d95a5a139d3a2a003563c0ee89a9884ee9c0f9f734a460df37f584676589b386f045b96792bc868124f71da66fcd125e6f9696adb7cabcdf43
data/README.md CHANGED
@@ -25,11 +25,11 @@ shorts:
25
25
  Here, every page in the site will get a sibling with the name
26
26
  `:year:month:day.html`, which will redirect to the page itself. You can use:
27
27
 
28
- * `:Y` - the full year of the post, like `2022` or `1976`
29
- * `:y` - the short form of the year of the post, like `23` or `76`
30
- * `:m` - the month of the post, like `01` or `12`
31
- * `:d` - the day of the post, like `07` or `29`
32
- * `:pos` - the unique position of the post in the entire list of them, like `42` or `256`
28
+ * `:year` - the short form of the year of the post, like `23` or `76`
29
+ * `:month` - the month of the post, like `01` or `12`
30
+ * `:day` - the day of the post, like `07` or `29`
31
+ * `:position` - the unique position of the post in the entire list of them, like `42` or `256`
32
+ * `:letter` - one English letter inside a month (empty instead of `a`)
33
33
 
34
34
  Be careful with the `:position`, since it may change when you add a new post
35
35
  somewhere in the middle of existing flow of posts.
data/features/cli.feature CHANGED
@@ -8,7 +8,7 @@ Feature: Simple site building
8
8
  plugins:
9
9
  - jekyll-shorts
10
10
  shorts:
11
- permalink: :y:m:d.html
11
+ permalink: :year:month:day.html
12
12
  """
13
13
  And I have a "_layouts/default.html" file with content:
14
14
  """
@@ -35,7 +35,7 @@ Feature: Simple site building
35
35
  plugins:
36
36
  - jekyll-shorts
37
37
  shorts:
38
- permalink: :y.html
38
+ permalink: :year.html
39
39
  """
40
40
  And I have a "_layouts/default.html" file with content:
41
41
  """
@@ -62,3 +62,39 @@ Feature: Simple site building
62
62
  """
63
63
  And I build Jekyll site
64
64
  And Exit code is not zero
65
+
66
+ Scenario: Simple site
67
+ Given I have a "_config.yml" file with content:
68
+ """
69
+ markdown: kramdown
70
+ plugins:
71
+ - jekyll-shorts
72
+ shorts:
73
+ permalink: :year:month:letter.html
74
+ """
75
+ And I have a "_layouts/default.html" file with content:
76
+ """
77
+ {{ content }}
78
+ """
79
+ And I have a "_posts/2023-01-01-apple.md" file with content:
80
+ """
81
+ ---
82
+ title: Hello, world!
83
+ layout: default
84
+ ---
85
+ Hello, world!
86
+ """
87
+ Then I build Jekyll site
88
+ And Exit code is zero
89
+ And I have a "_posts/2023-01-02-apple.md" file with content:
90
+ """
91
+ ---
92
+ title: Hello, world!
93
+ layout: default
94
+ ---
95
+ Hello, world!
96
+ """
97
+ And I build Jekyll site
98
+ And Exit code is zero
99
+ And File "_site/2301.html" exists
100
+ And File "_site/2301b.html" exists
@@ -28,7 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
29
29
  s.required_ruby_version = '>= 2.6'
30
30
  s.name = 'jekyll-shorts'
31
- s.version = '0.0.5'
31
+ s.version = '0.0.7'
32
32
  s.license = 'MIT'
33
33
  s.summary = 'Automatically generates short links for Jekyll website'
34
34
  s.description = [
@@ -45,20 +45,25 @@ class JekyllShorts::Generator < Jekyll::Generator
45
45
  permalink ||= config['permalink'] || ':year:month:day'
46
46
  start = Time.now
47
47
  total = 0
48
+ months = {}
48
49
  site.posts.docs.sort_by(&:url).each_with_index do |doc, pos|
49
50
  long = doc.url
51
+ month = doc.date.strftime('%Y%m')
52
+ months[month] = 0 if months[month].nil?
53
+ raise 'Too many letters' if months[month] >= 26
50
54
  short = Jekyll::URL.new(
51
55
  template: permalink,
52
56
  placeholders: {
53
- 'Y' => doc.date.year.to_s,
54
- 'y' => doc.date.year.to_s[2..],
55
- 'm' => doc.date.month.to_s.rjust(2, '0'),
56
- 'd' => doc.date.day.to_s.rjust(2, '0'),
57
- 'pos' => pos.to_s
57
+ 'year' => doc.date.year.to_s[2..],
58
+ 'month' => doc.date.month.to_s.rjust(2, '0'),
59
+ 'day' => doc.date.day.to_s.rjust(2, '0'),
60
+ 'letter' => months[month].zero? ? '' : (months[month] + 'a'.ord).chr,
61
+ 'position' => pos.to_s
58
62
  }
59
63
  ).to_s
60
64
  site.static_files << ShortFile.new(site, short, long)
61
65
  doc.data['short-url'] = short
66
+ months[month] += 1
62
67
  total += 1
63
68
  end
64
69
  Jekyll.logger.info("jekyll-shorts #{JekyllShorts::VERSION}: \
@@ -23,5 +23,5 @@
23
23
  # SOFTWARE.
24
24
 
25
25
  module JekyllShorts
26
- VERSION = '0.0.5'
26
+ VERSION = '0.0.7'
27
27
  end
@@ -49,4 +49,24 @@ class JekyllShorts::GeneratorTest < Minitest::Test
49
49
  gen.generate(site)
50
50
  end
51
51
  end
52
+
53
+ def test_two_similar_posts
54
+ Dir.mktmpdir do |home|
55
+ first = File.join(home, '2023-01-01-first.md')
56
+ File.write(first, "---\ntitle: Hello\n---\n\nHello, world!")
57
+ second = File.join(home, '2023-01-01-second.md')
58
+ File.write(second, "---\ntitle: Hello\n---\n\nHello, world!")
59
+ site = JekyllShorts::FakeSite.new(
60
+ {
61
+ 'url' => 'https://www.yegor256.com/',
62
+ 'shorts' => {
63
+ 'permalink' => ':y:m:letter.html'
64
+ }
65
+ },
66
+ [first, second]
67
+ )
68
+ gen = JekyllShorts::Generator.new
69
+ gen.generate(site)
70
+ end
71
+ end
52
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-shorts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko