jekyll-archives 2.1.1 → 2.2.1
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 +5 -5
- data/lib/jekyll-archives.rb +25 -35
- data/lib/jekyll-archives/archive.rb +27 -24
- data/lib/jekyll-archives/version.rb +7 -0
- metadata +45 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c5c95258f37bf6d7a5e8dc1befbefc7bbdf77aabfccdadd1c3a1522b9274907d
|
4
|
+
data.tar.gz: '0578f15ede10791f5febf123a00ded5fe86b90a79e1ba4091efcf012fba5b6d8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc616dc7d954f996eb84a485751c326aa3c825f52775bf42712b084083de3b9e46fb2cc2bed960f89785c4257fb8786046cd7d801d380778d7cb2737003f1dba
|
7
|
+
data.tar.gz: 190fe9519e46d52b7edbd68dd66fe38f5c92b1b84606bad1a1f336aea700f5b01af8ab6a498b160c9784575d411e6ed6721e8ddb756f7e3646b56d883f15b762
|
data/lib/jekyll-archives.rb
CHANGED
@@ -1,40 +1,30 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jekyll"
|
2
4
|
|
3
5
|
module Jekyll
|
4
6
|
module Archives
|
5
7
|
# Internal requires
|
6
|
-
autoload :Archive,
|
7
|
-
autoload :VERSION,
|
8
|
-
|
9
|
-
if (Jekyll.const_defined? :Hooks)
|
10
|
-
Jekyll::Hooks.register :site, :after_reset do |site|
|
11
|
-
# We need to disable incremental regen for Archives to generate with the
|
12
|
-
# correct content
|
13
|
-
site.regenerator.instance_variable_set(:@disabled, true)
|
14
|
-
end
|
15
|
-
end
|
8
|
+
autoload :Archive, "jekyll-archives/archive"
|
9
|
+
autoload :VERSION, "jekyll-archives/version"
|
16
10
|
|
17
11
|
class Archives < Jekyll::Generator
|
18
12
|
safe true
|
19
13
|
|
20
14
|
DEFAULTS = {
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
}
|
30
|
-
}
|
15
|
+
"layout" => "archive",
|
16
|
+
"enabled" => [],
|
17
|
+
"permalinks" => {
|
18
|
+
"year" => "/:year/",
|
19
|
+
"month" => "/:year/:month/",
|
20
|
+
"day" => "/:year/:month/:day/",
|
21
|
+
"tag" => "/tag/:name/",
|
22
|
+
"category" => "/category/:name/",
|
23
|
+
},
|
24
|
+
}.freeze
|
31
25
|
|
32
26
|
def initialize(config = nil)
|
33
|
-
|
34
|
-
@config = DEFAULTS
|
35
|
-
else
|
36
|
-
@config = Utils.deep_merge_hashes(DEFAULTS, config['jekyll-archives'])
|
37
|
-
end
|
27
|
+
@config = Utils.deep_merge_hashes(DEFAULTS, config.fetch("jekyll-archives", {}))
|
38
28
|
end
|
39
29
|
|
40
30
|
def generate(site)
|
@@ -42,7 +32,7 @@ module Jekyll
|
|
42
32
|
@posts = site.posts
|
43
33
|
@archives = []
|
44
34
|
|
45
|
-
@site.config[
|
35
|
+
@site.config["jekyll-archives"] = @config
|
46
36
|
|
47
37
|
read
|
48
38
|
@site.pages.concat(@archives)
|
@@ -88,16 +78,16 @@ module Jekyll
|
|
88
78
|
# Checks if archive type is enabled in config
|
89
79
|
def enabled?(archive)
|
90
80
|
@config["enabled"] == true || @config["enabled"] == "all" || if @config["enabled"].is_a? Array
|
91
|
-
|
92
|
-
|
81
|
+
@config["enabled"].include? archive
|
82
|
+
end
|
93
83
|
end
|
94
84
|
|
95
85
|
def tags
|
96
|
-
@site.post_attr_hash(
|
86
|
+
@site.post_attr_hash("tags")
|
97
87
|
end
|
98
88
|
|
99
89
|
def categories
|
100
|
-
@site.post_attr_hash(
|
90
|
+
@site.post_attr_hash("categories")
|
101
91
|
end
|
102
92
|
|
103
93
|
# Custom `post_attr_hash` method for years
|
@@ -105,26 +95,26 @@ module Jekyll
|
|
105
95
|
hash = Hash.new { |h, key| h[key] = [] }
|
106
96
|
|
107
97
|
# In Jekyll 3, Collection#each should be called on the #docs array directly.
|
108
|
-
if Jekyll::VERSION >=
|
98
|
+
if Jekyll::VERSION >= "3.0.0"
|
109
99
|
@posts.docs.each { |p| hash[p.date.strftime("%Y")] << p }
|
110
100
|
else
|
111
101
|
@posts.each { |p| hash[p.date.strftime("%Y")] << p }
|
112
102
|
end
|
113
|
-
hash.
|
103
|
+
hash.each_value { |posts| posts.sort!.reverse! }
|
114
104
|
hash
|
115
105
|
end
|
116
106
|
|
117
107
|
def months(year_posts)
|
118
108
|
hash = Hash.new { |h, key| h[key] = [] }
|
119
109
|
year_posts.each { |p| hash[p.date.strftime("%m")] << p }
|
120
|
-
hash.
|
110
|
+
hash.each_value { |posts| posts.sort!.reverse! }
|
121
111
|
hash
|
122
112
|
end
|
123
113
|
|
124
114
|
def days(month_posts)
|
125
115
|
hash = Hash.new { |h, key| h[key] = [] }
|
126
116
|
month_posts.each { |p| hash[p.date.strftime("%d")] << p }
|
127
|
-
hash.
|
117
|
+
hash.each_value { |posts| posts.sort!.reverse! }
|
128
118
|
hash
|
129
119
|
end
|
130
120
|
end
|
@@ -1,7 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Jekyll
|
2
4
|
module Archives
|
3
5
|
class Archive < Jekyll::Page
|
4
|
-
|
5
6
|
attr_accessor :posts, :type, :slug
|
6
7
|
|
7
8
|
# Attributes for Liquid templates
|
@@ -13,6 +14,7 @@ module Jekyll
|
|
13
14
|
name
|
14
15
|
path
|
15
16
|
url
|
17
|
+
permalink
|
16
18
|
).freeze
|
17
19
|
|
18
20
|
# Initialize a new Archive page
|
@@ -27,12 +29,11 @@ module Jekyll
|
|
27
29
|
@posts = posts
|
28
30
|
@type = type
|
29
31
|
@title = title
|
30
|
-
@config = site.config[
|
32
|
+
@config = site.config["jekyll-archives"]
|
31
33
|
|
32
|
-
# Generate slug if tag or category
|
33
|
-
|
34
|
-
|
35
|
-
end
|
34
|
+
# Generate slug if tag or category
|
35
|
+
# (taken from jekyll/jekyll/features/support/env.rb)
|
36
|
+
@slug = Utils.slugify(title) if title.is_a? String
|
36
37
|
|
37
38
|
# Use ".html" for file extension and url for path
|
38
39
|
@ext = File.extname(relative_path)
|
@@ -40,7 +41,7 @@ module Jekyll
|
|
40
41
|
@name = File.basename(relative_path, @ext)
|
41
42
|
|
42
43
|
@data = {
|
43
|
-
"layout" => layout
|
44
|
+
"layout" => layout,
|
44
45
|
}
|
45
46
|
@content = ""
|
46
47
|
end
|
@@ -49,17 +50,17 @@ module Jekyll
|
|
49
50
|
#
|
50
51
|
# Returns the template String.
|
51
52
|
def template
|
52
|
-
@config[
|
53
|
+
@config["permalinks"][type]
|
53
54
|
end
|
54
55
|
|
55
56
|
# The layout to use for rendering
|
56
57
|
#
|
57
58
|
# Returns the layout as a String
|
58
59
|
def layout
|
59
|
-
if @config[
|
60
|
-
@config[
|
60
|
+
if @config["layouts"] && @config["layouts"][type]
|
61
|
+
@config["layouts"][type]
|
61
62
|
else
|
62
|
-
@config[
|
63
|
+
@config["layout"]
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
@@ -67,7 +68,7 @@ module Jekyll
|
|
67
68
|
# desired placeholder replacements. For details see "url.rb".
|
68
69
|
def url_placeholders
|
69
70
|
if @title.is_a? Hash
|
70
|
-
@title.merge(
|
71
|
+
@title.merge(:type => @type)
|
71
72
|
else
|
72
73
|
{ :name => @slug, :type => @type }
|
73
74
|
end
|
@@ -77,13 +78,17 @@ module Jekyll
|
|
77
78
|
#
|
78
79
|
# Returns the String url.
|
79
80
|
def url
|
80
|
-
@url ||= URL.new(
|
81
|
-
:template
|
81
|
+
@url ||= URL.new(
|
82
|
+
:template => template,
|
82
83
|
:placeholders => url_placeholders,
|
83
|
-
:permalink
|
84
|
-
|
84
|
+
:permalink => nil
|
85
|
+
).to_s
|
85
86
|
rescue ArgumentError
|
86
|
-
raise ArgumentError
|
87
|
+
raise ArgumentError, "Template \"#{template}\" provided is invalid."
|
88
|
+
end
|
89
|
+
|
90
|
+
def permalink
|
91
|
+
data&.is_a?(Hash) && data["permalink"]
|
87
92
|
end
|
88
93
|
|
89
94
|
# Produce a title object suitable for Liquid based on type of archive.
|
@@ -91,9 +96,7 @@ module Jekyll
|
|
91
96
|
# Returns a String (for tag and category archives) and nil for
|
92
97
|
# date-based archives.
|
93
98
|
def title
|
94
|
-
if @title.is_a? String
|
95
|
-
@title
|
96
|
-
end
|
99
|
+
@title if @title.is_a? String
|
97
100
|
end
|
98
101
|
|
99
102
|
# Produce a date object if a date-based archive
|
@@ -101,7 +104,7 @@ module Jekyll
|
|
101
104
|
# Returns a Date.
|
102
105
|
def date
|
103
106
|
if @title.is_a? Hash
|
104
|
-
args = @title.values.map
|
107
|
+
args = @title.values.map(&:to_i)
|
105
108
|
Date.new(*args)
|
106
109
|
end
|
107
110
|
end
|
@@ -110,14 +113,14 @@ module Jekyll
|
|
110
113
|
#
|
111
114
|
# Returns the destination relative path String.
|
112
115
|
def relative_path
|
113
|
-
path = URL.unescape_path(url).gsub(
|
114
|
-
path = File.join(path, "index.html") if url =~
|
116
|
+
path = URL.unescape_path(url).gsub(%r!^\/!, "")
|
117
|
+
path = File.join(path, "index.html") if url =~ %r!\/$!
|
115
118
|
path
|
116
119
|
end
|
117
120
|
|
118
121
|
# Returns the object as a debug String.
|
119
122
|
def inspect
|
120
|
-
"#<Jekyll:Archive @type=#{@type
|
123
|
+
"#<Jekyll:Archive @type=#{@type} @title=#{@title} @data=#{@data.inspect}>"
|
121
124
|
end
|
122
125
|
end
|
123
126
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-archives
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alfred Xing
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -16,16 +16,22 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '3.6'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
29
|
+
version: '3.6'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: bundler
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
@@ -39,7 +45,7 @@ dependencies:
|
|
39
45
|
- !ruby/object:Gem::Version
|
40
46
|
version: '0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: minitest
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - ">="
|
@@ -53,7 +59,7 @@ dependencies:
|
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: rake
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - ">="
|
@@ -67,7 +73,35 @@ dependencies:
|
|
67
73
|
- !ruby/object:Gem::Version
|
68
74
|
version: '0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: rdoc
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: rubocop-jekyll
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0.9'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0.9'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: shoulda
|
71
105
|
requirement: !ruby/object:Gem::Requirement
|
72
106
|
requirements:
|
73
107
|
- - ">="
|
@@ -88,6 +122,7 @@ extra_rdoc_files: []
|
|
88
122
|
files:
|
89
123
|
- lib/jekyll-archives.rb
|
90
124
|
- lib/jekyll-archives/archive.rb
|
125
|
+
- lib/jekyll-archives/version.rb
|
91
126
|
homepage: https://github.com/jekyll/jekyll-archives
|
92
127
|
licenses:
|
93
128
|
- MIT
|
@@ -100,15 +135,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
100
135
|
requirements:
|
101
136
|
- - ">="
|
102
137
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
138
|
+
version: 2.3.0
|
104
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
140
|
requirements:
|
106
141
|
- - ">="
|
107
142
|
- !ruby/object:Gem::Version
|
108
143
|
version: '0'
|
109
144
|
requirements: []
|
110
|
-
|
111
|
-
rubygems_version: 2.5.1
|
145
|
+
rubygems_version: 3.0.3
|
112
146
|
signing_key:
|
113
147
|
specification_version: 4
|
114
148
|
summary: Post archives for Jekyll.
|