jekyll 4.1.1 → 4.2.2
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/.rubocop.yml +153 -4
- data/README.markdown +2 -6
- data/lib/blank_template/_layouts/default.html +1 -1
- data/lib/jekyll/cleaner.rb +1 -1
- data/lib/jekyll/commands/doctor.rb +19 -15
- data/lib/jekyll/commands/new.rb +3 -0
- data/lib/jekyll/commands/new_theme.rb +0 -2
- data/lib/jekyll/configuration.rb +11 -14
- data/lib/jekyll/convertible.rb +9 -6
- data/lib/jekyll/document.rb +20 -12
- data/lib/jekyll/drops/collection_drop.rb +3 -3
- data/lib/jekyll/drops/document_drop.rb +4 -15
- data/lib/jekyll/drops/drop.rb +98 -20
- data/lib/jekyll/drops/site_drop.rb +3 -3
- data/lib/jekyll/drops/static_file_drop.rb +4 -4
- data/lib/jekyll/drops/url_drop.rb +2 -2
- data/lib/jekyll/filters/url_filters.rb +5 -2
- data/lib/jekyll/filters.rb +6 -9
- data/lib/jekyll/frontmatter_defaults.rb +2 -2
- data/lib/jekyll/hooks.rb +20 -16
- data/lib/jekyll/layout.rb +5 -0
- data/lib/jekyll/page.rb +20 -13
- data/lib/jekyll/path_manager.rb +53 -10
- data/lib/jekyll/reader.rb +11 -6
- data/lib/jekyll/readers/data_reader.rb +3 -0
- data/lib/jekyll/readers/post_reader.rb +1 -1
- data/lib/jekyll/related_posts.rb +1 -1
- data/lib/jekyll/renderer.rb +8 -4
- data/lib/jekyll/site.rb +17 -2
- data/lib/jekyll/static_file.rb +2 -2
- data/lib/jekyll/tags/include.rb +31 -32
- data/lib/jekyll/tags/link.rb +2 -1
- data/lib/jekyll/tags/post_url.rb +3 -4
- data/lib/jekyll/url.rb +8 -5
- data/lib/jekyll/utils/platforms.rb +34 -49
- data/lib/jekyll/version.rb +1 -1
- data/lib/jekyll.rb +2 -16
- metadata +7 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f122205829d592889ffa17acbd3356da8f0de5a0ea22eb5e81fe52ec5751c02
|
|
4
|
+
data.tar.gz: fe9218747458a630880fa1b359141b07e34ad412f8ca0c4916b48060086c1814
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac4e6dff52be311677418ea2bf0e84d709fed2fb652f88aaf0fb42ec034702ea50f5f4b84876c79db6f0e801f0c9c3059ff011f10654f8274c39108c2b98ed25
|
|
7
|
+
data.tar.gz: e570481ff2b899ba49c2cbd61a94f0ccd7ae9799f487251ca0eb72200edcf3df7e3aa528036fb873f842c0ca816ad640fb129a08a6cfedec7e4e7d9a40fa3151
|
data/.rubocop.yml
CHANGED
|
@@ -10,6 +10,7 @@ Jekyll/NoPutsAllowed:
|
|
|
10
10
|
- rake/*.rake
|
|
11
11
|
|
|
12
12
|
AllCops:
|
|
13
|
+
SuggestExtensions: false
|
|
13
14
|
TargetRubyVersion: 2.4
|
|
14
15
|
Include:
|
|
15
16
|
- lib/**/*.rb
|
|
@@ -22,6 +23,8 @@ AllCops:
|
|
|
22
23
|
- vendor/**/*
|
|
23
24
|
- tmp/**/*
|
|
24
25
|
|
|
26
|
+
Layout/BeginEndAlignment:
|
|
27
|
+
Enabled: true
|
|
25
28
|
Layout/EmptyComment:
|
|
26
29
|
Enabled: false
|
|
27
30
|
Layout/EmptyLinesAroundAttributeAccessor:
|
|
@@ -50,26 +53,84 @@ Layout/MultilineOperationIndentation:
|
|
|
50
53
|
EnforcedStyle: indented
|
|
51
54
|
Layout/SpaceAroundMethodCallOperator:
|
|
52
55
|
Enabled: true
|
|
56
|
+
Layout/SpaceInsideHashLiteralBraces:
|
|
57
|
+
Enabled: true
|
|
58
|
+
Exclude:
|
|
59
|
+
- test/**/*.rb
|
|
53
60
|
|
|
54
|
-
Lint/
|
|
61
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
|
62
|
+
Enabled: true
|
|
63
|
+
Lint/ConstantDefinitionInBlock:
|
|
64
|
+
Enabled: true
|
|
55
65
|
Exclude:
|
|
56
|
-
- test
|
|
66
|
+
- test/**/*.rb
|
|
57
67
|
Lint/DeprecatedOpenSSLConstant:
|
|
58
68
|
Enabled: true
|
|
69
|
+
Lint/DuplicateBranch:
|
|
70
|
+
Enabled: true
|
|
71
|
+
Lint/DuplicateElsifCondition:
|
|
72
|
+
Enabled: true
|
|
73
|
+
Lint/DuplicateRegexpCharacterClassElement:
|
|
74
|
+
Enabled: true
|
|
75
|
+
Lint/DuplicateRescueException:
|
|
76
|
+
Enabled: true
|
|
77
|
+
Lint/DuplicateRequire:
|
|
78
|
+
Enabled: true
|
|
79
|
+
Lint/EmptyBlock:
|
|
80
|
+
Enabled: true
|
|
81
|
+
Lint/EmptyClass:
|
|
82
|
+
Enabled: true
|
|
83
|
+
Lint/EmptyConditionalBody:
|
|
84
|
+
Enabled: true
|
|
85
|
+
Lint/EmptyFile:
|
|
86
|
+
Enabled: true
|
|
87
|
+
Lint/FloatComparison:
|
|
88
|
+
Enabled: true
|
|
89
|
+
Lint/HashCompareByIdentity:
|
|
90
|
+
Enabled: true
|
|
91
|
+
Lint/IdentityComparison:
|
|
92
|
+
Enabled: true
|
|
93
|
+
Lint/MissingSuper:
|
|
94
|
+
Enabled: false
|
|
59
95
|
Lint/MixedRegexpCaptureTypes:
|
|
60
96
|
Enabled: false
|
|
97
|
+
Lint/NestedPercentLiteral:
|
|
98
|
+
Exclude:
|
|
99
|
+
- test/test_site.rb
|
|
100
|
+
Lint/NoReturnInBeginEndBlocks:
|
|
101
|
+
Enabled: true
|
|
102
|
+
Lint/OutOfRangeRegexpRef:
|
|
103
|
+
Enabled: true
|
|
61
104
|
Lint/RaiseException:
|
|
62
105
|
Enabled: true
|
|
106
|
+
Lint/RedundantSafeNavigation:
|
|
107
|
+
Enabled: true
|
|
108
|
+
Lint/SelfAssignment:
|
|
109
|
+
Enabled: true
|
|
63
110
|
Lint/StructNewOverride:
|
|
64
111
|
Enabled: true
|
|
112
|
+
Lint/ToEnumArguments:
|
|
113
|
+
Enabled: false
|
|
114
|
+
Lint/TopLevelReturnWithArgument:
|
|
115
|
+
Enabled: true
|
|
116
|
+
Lint/TrailingCommaInAttributeDeclaration:
|
|
117
|
+
Enabled: true
|
|
118
|
+
Lint/UnmodifiedReduceAccumulator:
|
|
119
|
+
Enabled: true
|
|
65
120
|
Lint/UnreachableCode:
|
|
66
121
|
Severity: error
|
|
122
|
+
Lint/UnreachableLoop:
|
|
123
|
+
Enabled: true
|
|
124
|
+
Lint/UselessMethodDefinition:
|
|
125
|
+
Enabled: true
|
|
126
|
+
Lint/UselessTimes:
|
|
127
|
+
Enabled: true
|
|
67
128
|
Lint/Void:
|
|
68
129
|
Exclude:
|
|
69
130
|
- lib/jekyll/site.rb
|
|
70
131
|
|
|
71
132
|
Metrics/AbcSize:
|
|
72
|
-
Max:
|
|
133
|
+
Max: 23
|
|
73
134
|
Metrics/BlockLength:
|
|
74
135
|
Exclude:
|
|
75
136
|
- test/**/*.rb
|
|
@@ -100,7 +161,7 @@ Metrics/ModuleLength:
|
|
|
100
161
|
Metrics/ParameterLists:
|
|
101
162
|
Max: 4
|
|
102
163
|
Metrics/PerceivedComplexity:
|
|
103
|
-
Max:
|
|
164
|
+
Max: 13
|
|
104
165
|
|
|
105
166
|
Naming/FileName:
|
|
106
167
|
Enabled: false
|
|
@@ -114,6 +175,39 @@ Naming/MemoizedInstanceVariableName:
|
|
|
114
175
|
- lib/jekyll/drops/unified_payload_drop.rb
|
|
115
176
|
- lib/jekyll/page_without_a_file.rb
|
|
116
177
|
|
|
178
|
+
Performance/AncestorsInclude:
|
|
179
|
+
Enabled: false
|
|
180
|
+
Performance/ArraySemiInfiniteRangeSlice:
|
|
181
|
+
Enabled: true
|
|
182
|
+
Performance/BigDecimalWithNumericArgument:
|
|
183
|
+
Enabled: true
|
|
184
|
+
Performance/BlockGivenWithExplicitBlock:
|
|
185
|
+
Enabled: true
|
|
186
|
+
Performance/ChainArrayAllocation:
|
|
187
|
+
Enabled: true
|
|
188
|
+
Performance/CollectionLiteralInLoop:
|
|
189
|
+
Enabled: true
|
|
190
|
+
Performance/ConstantRegexp:
|
|
191
|
+
Enabled: true
|
|
192
|
+
Performance/MethodObjectAsBlock:
|
|
193
|
+
Enabled: true
|
|
194
|
+
Performance/RedundantSortBlock:
|
|
195
|
+
Enabled: true
|
|
196
|
+
Performance/RedundantStringChars:
|
|
197
|
+
Enabled: true
|
|
198
|
+
Performance/ReverseFirst:
|
|
199
|
+
Enabled: true
|
|
200
|
+
Performance/SortReverse:
|
|
201
|
+
Enabled: false
|
|
202
|
+
Performance/Squeeze:
|
|
203
|
+
Enabled: true
|
|
204
|
+
Performance/StringInclude:
|
|
205
|
+
Enabled: true
|
|
206
|
+
Exclude:
|
|
207
|
+
- lib/jekyll/utils/platforms.rb
|
|
208
|
+
Performance/Sum:
|
|
209
|
+
Enabled: true
|
|
210
|
+
|
|
117
211
|
Security/MarshalLoad:
|
|
118
212
|
Exclude:
|
|
119
213
|
- !ruby/regexp /test\/.*.rb$/
|
|
@@ -123,21 +217,41 @@ Security/YAMLLoad:
|
|
|
123
217
|
- !ruby/regexp /features\/.*.rb/
|
|
124
218
|
- !ruby/regexp /test\/.*.rb$/
|
|
125
219
|
|
|
220
|
+
Style/ArgumentsForwarding:
|
|
221
|
+
Enabled: false
|
|
222
|
+
Style/ArrayCoercion:
|
|
223
|
+
Enabled: true
|
|
126
224
|
Style/AccessModifierDeclarations:
|
|
127
225
|
Enabled: false
|
|
226
|
+
Style/AccessorGrouping:
|
|
227
|
+
Enabled: false
|
|
128
228
|
Style/Alias:
|
|
129
229
|
EnforcedStyle: prefer_alias_method
|
|
130
230
|
Style/AndOr:
|
|
131
231
|
Severity: error
|
|
232
|
+
Style/BisectedAttrAccessor:
|
|
233
|
+
Enabled: true
|
|
234
|
+
Style/CaseLikeIf:
|
|
235
|
+
Enabled: true
|
|
132
236
|
Style/ClassAndModuleChildren:
|
|
133
237
|
Exclude:
|
|
134
238
|
- test/**/*.rb
|
|
239
|
+
Style/ClassEqualityComparison:
|
|
240
|
+
Enabled: true
|
|
241
|
+
Style/CollectionCompact:
|
|
242
|
+
Enabled: true
|
|
243
|
+
Style/CombinableLoops:
|
|
244
|
+
Enabled: true
|
|
135
245
|
Style/Documentation:
|
|
136
246
|
Enabled: false
|
|
247
|
+
Style/DocumentDynamicEvalDefinition:
|
|
248
|
+
Enabled: true
|
|
137
249
|
Style/DoubleNegation:
|
|
138
250
|
Enabled: false
|
|
139
251
|
Style/ExponentialNotation:
|
|
140
252
|
Enabled: true
|
|
253
|
+
Style/ExplicitBlockArgument:
|
|
254
|
+
Enabled: false
|
|
141
255
|
Style/FormatStringToken:
|
|
142
256
|
Exclude:
|
|
143
257
|
- lib/jekyll/utils/ansi.rb
|
|
@@ -145,10 +259,16 @@ Style/FormatStringToken:
|
|
|
145
259
|
- lib/jekyll/profiler.rb
|
|
146
260
|
Style/FrozenStringLiteralComment:
|
|
147
261
|
EnforcedStyle: always
|
|
262
|
+
Style/GlobalStdStream:
|
|
263
|
+
Enabled: true
|
|
148
264
|
Style/GuardClause:
|
|
149
265
|
Enabled: false
|
|
266
|
+
Style/HashAsLastArrayItem:
|
|
267
|
+
Enabled: true
|
|
150
268
|
Style/HashEachMethods:
|
|
151
269
|
Enabled: true
|
|
270
|
+
Style/HashLikeCase:
|
|
271
|
+
Enabled: true
|
|
152
272
|
Style/HashSyntax:
|
|
153
273
|
EnforcedStyle: hash_rockets
|
|
154
274
|
Severity: error
|
|
@@ -156,6 +276,8 @@ Style/HashTransformKeys:
|
|
|
156
276
|
Enabled: false
|
|
157
277
|
Style/HashTransformValues:
|
|
158
278
|
Enabled: true
|
|
279
|
+
Style/KeywordParametersOrder:
|
|
280
|
+
Enabled: true
|
|
159
281
|
Style/MixinUsage:
|
|
160
282
|
Exclude:
|
|
161
283
|
- test/helper.rb
|
|
@@ -163,6 +285,12 @@ Style/ModuleFunction:
|
|
|
163
285
|
Enabled: false
|
|
164
286
|
Style/MultilineTernaryOperator:
|
|
165
287
|
Severity: error
|
|
288
|
+
Style/NegatedIfElseCondition:
|
|
289
|
+
Enabled: true
|
|
290
|
+
Style/NilLambda:
|
|
291
|
+
Enabled: true
|
|
292
|
+
Style/OptionalBooleanParameter:
|
|
293
|
+
Enabled: true
|
|
166
294
|
Style/PercentLiteralDelimiters:
|
|
167
295
|
PreferredDelimiters:
|
|
168
296
|
"%q": "{}"
|
|
@@ -172,12 +300,22 @@ Style/PercentLiteralDelimiters:
|
|
|
172
300
|
"%w": "()"
|
|
173
301
|
"%W": "()"
|
|
174
302
|
"%x": "()"
|
|
303
|
+
Style/RedundantArgument:
|
|
304
|
+
Enabled: true
|
|
305
|
+
Style/RedundantAssignment:
|
|
306
|
+
Enabled: true
|
|
307
|
+
Style/RedundantBegin:
|
|
308
|
+
Enabled: false
|
|
175
309
|
Style/RedundantFetchBlock:
|
|
176
310
|
Enabled: false
|
|
311
|
+
Style/RedundantFileExtensionInRequire:
|
|
312
|
+
Enabled: true
|
|
177
313
|
Style/RedundantRegexpCharacterClass:
|
|
178
314
|
Enabled: true
|
|
179
315
|
Style/RedundantRegexpEscape:
|
|
180
316
|
Enabled: true
|
|
317
|
+
Style/RedundantSelfAssignment:
|
|
318
|
+
Enabled: true
|
|
181
319
|
Style/RegexpLiteral:
|
|
182
320
|
EnforcedStyle: percent_r
|
|
183
321
|
Style/RescueModifier:
|
|
@@ -187,12 +325,23 @@ Style/SafeNavigation:
|
|
|
187
325
|
- lib/jekyll/document.rb
|
|
188
326
|
Style/SignalException:
|
|
189
327
|
EnforcedStyle: only_raise
|
|
328
|
+
Style/SingleArgumentDig:
|
|
329
|
+
Enabled: true
|
|
190
330
|
Style/SlicingWithRange:
|
|
191
331
|
Enabled: false
|
|
332
|
+
Style/SoleNestedConditional:
|
|
333
|
+
Enabled: true
|
|
192
334
|
Style/StringLiterals:
|
|
193
335
|
EnforcedStyle: double_quotes
|
|
336
|
+
Style/StringConcatenation:
|
|
337
|
+
Enabled: true
|
|
338
|
+
Exclude:
|
|
339
|
+
- lib/jekyll/commands/*.rb
|
|
340
|
+
- test/**/*.rb
|
|
194
341
|
Style/StringLiteralsInInterpolation:
|
|
195
342
|
EnforcedStyle: double_quotes
|
|
343
|
+
Style/SwapValues:
|
|
344
|
+
Enabled: true
|
|
196
345
|
Style/SymbolArray:
|
|
197
346
|
EnforcedStyle: brackets
|
|
198
347
|
Style/TrailingCommaInArrayLiteral:
|
data/README.markdown
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
# [Jekyll](https://jekyllrb.com/)
|
|
2
2
|
|
|
3
3
|
[][ruby-gems]
|
|
4
|
-
[][ci-workflow]
|
|
5
5
|
[][appveyor]
|
|
6
|
-
[][codeclimate]
|
|
7
|
-
[][coverage]
|
|
8
6
|
[][hakiri]
|
|
9
7
|
[](#backers)
|
|
10
8
|
[](#sponsors)
|
|
11
9
|
|
|
12
10
|
[ruby-gems]: https://rubygems.org/gems/jekyll
|
|
13
|
-
[codeclimate]: https://codeclimate.com/github/jekyll/jekyll
|
|
14
|
-
[coverage]: https://codeclimate.com/github/jekyll/jekyll/coverage
|
|
15
11
|
[hakiri]: https://hakiri.io/github/jekyll/jekyll/master
|
|
16
|
-
[
|
|
12
|
+
[ci-workflow]: https://github.com/jekyll/jekyll/actions?query=workflow%3A%22Continuous+Integration%22+branch%3Amaster
|
|
17
13
|
[appveyor]: https://ci.appveyor.com/project/jekyll/jekyll/branch/master
|
|
18
14
|
|
|
19
15
|
Jekyll is a simple, blog-aware, static site generator perfect for personal, project, or organization sites. Think of it like a file-based CMS, without all the complexity. Jekyll takes your content, renders Markdown and Liquid templates, and spits out a complete, static website ready to be served by Apache, Nginx or another web server. Jekyll is the engine behind [GitHub Pages](https://pages.github.com), which you can use to host sites right from your GitHub repositories.
|
data/lib/jekyll/cleaner.rb
CHANGED
|
@@ -44,7 +44,7 @@ module Jekyll
|
|
|
44
44
|
dirs = keep_dirs
|
|
45
45
|
|
|
46
46
|
Utils.safe_glob(site.in_dest_dir, ["**", "*"], File::FNM_DOTMATCH).each do |file|
|
|
47
|
-
next if file
|
|
47
|
+
next if HIDDEN_FILE_REGEX.match?(file) || regex.match?(file) || dirs.include?(file)
|
|
48
48
|
|
|
49
49
|
files << file
|
|
50
50
|
end
|
|
@@ -67,15 +67,16 @@ module Jekyll
|
|
|
67
67
|
|
|
68
68
|
def conflicting_urls(site)
|
|
69
69
|
conflicting_urls = false
|
|
70
|
-
|
|
71
|
-
urls = collect_urls(urls, site.pages, site.dest)
|
|
72
|
-
urls = collect_urls(urls, site.posts.docs, site.dest)
|
|
73
|
-
urls.each do |url, paths|
|
|
70
|
+
destination_map(site).each do |dest, paths|
|
|
74
71
|
next unless paths.size > 1
|
|
75
72
|
|
|
76
73
|
conflicting_urls = true
|
|
77
|
-
Jekyll.logger.warn "Conflict:",
|
|
78
|
-
|
|
74
|
+
Jekyll.logger.warn "Conflict:",
|
|
75
|
+
"The following destination is shared by multiple files."
|
|
76
|
+
Jekyll.logger.warn "", "The written file may end up with unexpected contents."
|
|
77
|
+
Jekyll.logger.warn "", dest.to_s.cyan
|
|
78
|
+
paths.each { |path| Jekyll.logger.warn "", " - #{path}" }
|
|
79
|
+
Jekyll.logger.warn ""
|
|
79
80
|
end
|
|
80
81
|
conflicting_urls
|
|
81
82
|
end
|
|
@@ -84,7 +85,7 @@ module Jekyll
|
|
|
84
85
|
return true unless Utils::Platforms.osx?
|
|
85
86
|
|
|
86
87
|
if Dir.pwd != `pwd`.strip
|
|
87
|
-
Jekyll.logger.error
|
|
88
|
+
Jekyll.logger.error <<~STR
|
|
88
89
|
We have detected that there might be trouble using fsevent on your
|
|
89
90
|
operating system, you can read https://github.com/thibaudgg/rb-fsevent/wiki/no-fsevents-fired-(OSX-bug)
|
|
90
91
|
for possible work arounds or you can work around it immediately
|
|
@@ -122,16 +123,19 @@ module Jekyll
|
|
|
122
123
|
|
|
123
124
|
private
|
|
124
125
|
|
|
125
|
-
def
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
def destination_map(site)
|
|
127
|
+
{}.tap do |result|
|
|
128
|
+
site.each_site_file do |thing|
|
|
129
|
+
next if allow_used_permalink?(thing)
|
|
130
|
+
|
|
131
|
+
dest_path = thing.destination(site.dest)
|
|
132
|
+
(result[dest_path] ||= []) << thing.path
|
|
132
133
|
end
|
|
133
134
|
end
|
|
134
|
-
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def allow_used_permalink?(item)
|
|
138
|
+
defined?(JekyllRedirectFrom) && item.is_a?(JekyllRedirectFrom::RedirectPage)
|
|
135
139
|
end
|
|
136
140
|
|
|
137
141
|
def case_insensitive_urls(things, destination)
|
data/lib/jekyll/commands/new.rb
CHANGED
|
@@ -99,6 +99,9 @@ module Jekyll
|
|
|
99
99
|
# Performance-booster for watching directories on Windows
|
|
100
100
|
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
|
101
101
|
|
|
102
|
+
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
|
103
|
+
# do not have a Java counterpart.
|
|
104
|
+
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
|
102
105
|
RUBY
|
|
103
106
|
end
|
|
104
107
|
|
|
@@ -20,7 +20,6 @@ module Jekyll
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
# rubocop:disable Metrics/AbcSize
|
|
24
23
|
def process(args, opts)
|
|
25
24
|
if !args || args.empty?
|
|
26
25
|
raise Jekyll::Errors::InvalidThemeName, "You must specify a theme name."
|
|
@@ -35,7 +34,6 @@ module Jekyll
|
|
|
35
34
|
" is ready for you in #{theme.path.to_s.cyan}!"
|
|
36
35
|
Jekyll.logger.info "For help getting started, read #{theme.path}/README.md."
|
|
37
36
|
end
|
|
38
|
-
# rubocop:enable Metrics/AbcSize
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
end
|
data/lib/jekyll/configuration.rb
CHANGED
|
@@ -269,21 +269,18 @@ module Jekyll
|
|
|
269
269
|
|
|
270
270
|
private
|
|
271
271
|
|
|
272
|
+
STYLE_TO_PERMALINK = {
|
|
273
|
+
:none => "/:categories/:title:output_ext",
|
|
274
|
+
:date => "/:categories/:year/:month/:day/:title:output_ext",
|
|
275
|
+
:ordinal => "/:categories/:year/:y_day/:title:output_ext",
|
|
276
|
+
:pretty => "/:categories/:year/:month/:day/:title/",
|
|
277
|
+
:weekdate => "/:categories/:year/W:week/:short_day/:title:output_ext",
|
|
278
|
+
}.freeze
|
|
279
|
+
|
|
280
|
+
private_constant :STYLE_TO_PERMALINK
|
|
281
|
+
|
|
272
282
|
def style_to_permalink(permalink_style)
|
|
273
|
-
|
|
274
|
-
when :pretty
|
|
275
|
-
"/:categories/:year/:month/:day/:title/"
|
|
276
|
-
when :none
|
|
277
|
-
"/:categories/:title:output_ext"
|
|
278
|
-
when :date
|
|
279
|
-
"/:categories/:year/:month/:day/:title:output_ext"
|
|
280
|
-
when :ordinal
|
|
281
|
-
"/:categories/:year/:y_day/:title:output_ext"
|
|
282
|
-
when :weekdate
|
|
283
|
-
"/:categories/:year/W:week/:short_day/:title:output_ext"
|
|
284
|
-
else
|
|
285
|
-
permalink_style.to_s
|
|
286
|
-
end
|
|
283
|
+
STYLE_TO_PERMALINK[permalink_style.to_sym] || permalink_style.to_s
|
|
287
284
|
end
|
|
288
285
|
|
|
289
286
|
def check_include_exclude(config)
|
data/lib/jekyll/convertible.rb
CHANGED
|
@@ -35,13 +35,13 @@ module Jekyll
|
|
|
35
35
|
# Returns nothing.
|
|
36
36
|
# rubocop:disable Metrics/AbcSize
|
|
37
37
|
def read_yaml(base, name, opts = {})
|
|
38
|
-
filename =
|
|
38
|
+
filename = @path || site.in_source_dir(base, name)
|
|
39
|
+
Jekyll.logger.debug "Reading:", relative_path
|
|
39
40
|
|
|
40
41
|
begin
|
|
41
|
-
self.content = File.read(
|
|
42
|
-
**Utils.merged_file_read_opts(site, opts))
|
|
42
|
+
self.content = File.read(filename, **Utils.merged_file_read_opts(site, opts))
|
|
43
43
|
if content =~ Document::YAML_FRONT_MATTER_REGEXP
|
|
44
|
-
self.content =
|
|
44
|
+
self.content = Regexp.last_match.post_match
|
|
45
45
|
self.data = SafeYAML.load(Regexp.last_match(1))
|
|
46
46
|
end
|
|
47
47
|
rescue Psych::SyntaxError => e
|
|
@@ -69,7 +69,7 @@ module Jekyll
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def validate_permalink!(filename)
|
|
72
|
-
if self.data["permalink"]
|
|
72
|
+
if self.data["permalink"] == ""
|
|
73
73
|
raise Errors::InvalidPermalinkError, "Invalid permalink in #{filename}"
|
|
74
74
|
end
|
|
75
75
|
end
|
|
@@ -117,7 +117,6 @@ module Jekyll
|
|
|
117
117
|
hsh[attribute] = send(attribute)
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
defaults = site.frontmatter_defaults.all(relative_path, type)
|
|
121
120
|
Utils.deep_merge_hashes defaults, Utils.deep_merge_hashes(data, further_data)
|
|
122
121
|
end
|
|
123
122
|
|
|
@@ -247,6 +246,10 @@ module Jekyll
|
|
|
247
246
|
|
|
248
247
|
private
|
|
249
248
|
|
|
249
|
+
def defaults
|
|
250
|
+
@defaults ||= site.frontmatter_defaults.all(relative_path, type)
|
|
251
|
+
end
|
|
252
|
+
|
|
250
253
|
def no_layout?
|
|
251
254
|
data["layout"] == "none"
|
|
252
255
|
end
|
data/lib/jekyll/document.rb
CHANGED
|
@@ -257,14 +257,16 @@ module Jekyll
|
|
|
257
257
|
#
|
|
258
258
|
# Returns the full path to the output file of this document.
|
|
259
259
|
def destination(base_directory)
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
260
|
+
@destination ||= {}
|
|
261
|
+
@destination[base_directory] ||= begin
|
|
262
|
+
path = site.in_dest_dir(base_directory, URL.unescape_path(url))
|
|
263
|
+
if url.end_with? "/"
|
|
264
|
+
path = File.join(path, "index.html")
|
|
265
|
+
else
|
|
266
|
+
path << output_ext unless path.end_with? output_ext
|
|
267
|
+
end
|
|
268
|
+
path
|
|
266
269
|
end
|
|
267
|
-
path
|
|
268
270
|
end
|
|
269
271
|
|
|
270
272
|
# Write the generated Document file to the destination directory.
|
|
@@ -351,9 +353,14 @@ module Jekyll
|
|
|
351
353
|
# True if the document has a collection and if that collection's #write?
|
|
352
354
|
# method returns true, and if the site's Publisher will publish the document.
|
|
353
355
|
# False otherwise.
|
|
356
|
+
#
|
|
357
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
|
354
358
|
def write?
|
|
355
|
-
|
|
359
|
+
return @write_p if defined?(@write_p)
|
|
360
|
+
|
|
361
|
+
@write_p = collection&.write? && site.publisher.publish?(self)
|
|
356
362
|
end
|
|
363
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
|
357
364
|
|
|
358
365
|
# The Document excerpt_separator, from the YAML Front-Matter or site
|
|
359
366
|
# default excerpt_separator value
|
|
@@ -452,7 +459,10 @@ module Jekyll
|
|
|
452
459
|
def merge_categories!(other)
|
|
453
460
|
if other.key?("categories") && !other["categories"].nil?
|
|
454
461
|
other["categories"] = other["categories"].split if other["categories"].is_a?(String)
|
|
455
|
-
|
|
462
|
+
|
|
463
|
+
if data["categories"].is_a?(Array)
|
|
464
|
+
other["categories"] = data["categories"] | other["categories"]
|
|
465
|
+
end
|
|
456
466
|
end
|
|
457
467
|
end
|
|
458
468
|
|
|
@@ -473,7 +483,7 @@ module Jekyll
|
|
|
473
483
|
def read_content(**opts)
|
|
474
484
|
self.content = File.read(path, **Utils.merged_file_read_opts(site, opts))
|
|
475
485
|
if content =~ YAML_FRONT_MATTER_REGEXP
|
|
476
|
-
self.content =
|
|
486
|
+
self.content = Regexp.last_match.post_match
|
|
477
487
|
data_file = SafeYAML.load(Regexp.last_match(1))
|
|
478
488
|
merge_data!(data_file, :source => "YAML front matter") if data_file
|
|
479
489
|
end
|
|
@@ -498,7 +508,6 @@ module Jekyll
|
|
|
498
508
|
end
|
|
499
509
|
end
|
|
500
510
|
|
|
501
|
-
# rubocop:disable Metrics/AbcSize
|
|
502
511
|
def populate_title
|
|
503
512
|
if relative_path =~ DATE_FILENAME_MATCHER
|
|
504
513
|
date, slug, ext = Regexp.last_match.captures
|
|
@@ -521,7 +530,6 @@ module Jekyll
|
|
|
521
530
|
data["slug"] ||= slug
|
|
522
531
|
data["ext"] ||= ext
|
|
523
532
|
end
|
|
524
|
-
# rubocop:enable Metrics/AbcSize
|
|
525
533
|
|
|
526
534
|
def modify_date(date)
|
|
527
535
|
if !data["date"] || data["date"].to_i == site.time.to_i
|
|
@@ -7,10 +7,10 @@ module Jekyll
|
|
|
7
7
|
|
|
8
8
|
mutable false
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
delegate_method_as :write?, :output
|
|
11
|
+
delegate_methods :label, :docs, :files, :directory, :relative_directory
|
|
12
12
|
|
|
13
|
-
private
|
|
13
|
+
private delegate_method_as :metadata, :fallback_data
|
|
14
14
|
|
|
15
15
|
def to_s
|
|
16
16
|
docs.to_s
|
|
@@ -11,10 +11,11 @@ module Jekyll
|
|
|
11
11
|
|
|
12
12
|
mutable false
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
delegate_method_as :relative_path, :path
|
|
15
|
+
private delegate_method_as :data, :fallback_data
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
|
18
|
+
data_delegators "title", "categories", "tags"
|
|
18
19
|
|
|
19
20
|
def collection
|
|
20
21
|
@obj.collection.label
|
|
@@ -64,18 +65,6 @@ module Jekyll
|
|
|
64
65
|
result[key] = doc[key] unless NESTED_OBJECT_FIELD_BLACKLIST.include?(key)
|
|
65
66
|
end
|
|
66
67
|
end
|
|
67
|
-
|
|
68
|
-
def title
|
|
69
|
-
@obj.data["title"]
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def categories
|
|
73
|
-
@obj.data["categories"]
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def tags
|
|
77
|
-
@obj.data["tags"]
|
|
78
|
-
end
|
|
79
68
|
end
|
|
80
69
|
end
|
|
81
70
|
end
|