jekyll-shorts 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/features/cli.feature +38 -2
- data/jekyll-shorts.gemspec +1 -1
- data/lib/jekyll-shorts/generator.rb +10 -5
- data/lib/jekyll-shorts/version.rb +1 -1
- data/test/test_generator.rb +20 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5274421350720698e2b1b121d2b1172e7353ed3ee272448a0f4770ce1de2cb9c
|
4
|
+
data.tar.gz: 438e0496e14abf79ac5a528f612b9063eb5eaada237c8b2a242f9420b4cc06c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
* `:
|
29
|
-
* `:
|
30
|
-
* `:
|
31
|
-
* `:
|
32
|
-
* `:
|
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: :
|
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: :
|
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
|
data/jekyll-shorts.gemspec
CHANGED
@@ -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.
|
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
|
-
'
|
54
|
-
'
|
55
|
-
'
|
56
|
-
'
|
57
|
-
'
|
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}: \
|
data/test/test_generator.rb
CHANGED
@@ -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
|