jekyll 4.1.1 → 4.2.0

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: b74631944252558b9ad068a1df651f0890577d11c6ac24d06050fe76e9a41d60
4
- data.tar.gz: c34826fe92efe4fe968692fa3517c4f8ddf600b9c99af1776d305804e313a1fe
3
+ metadata.gz: 8ada984c6843d26b182a1b999fa99cba4f98af9aa15c4193d65116fa897e16da
4
+ data.tar.gz: '009c07098270b070724e1e17a9f02197b5ff8d4a9664ac26d1f6c835824f1627'
5
5
  SHA512:
6
- metadata.gz: d89ea1ca35864a53aa21d21847ef357d33a28f8e094bc4c39bc519c2895ea6e8a87d86669252af4b9431a23634209bf38e909ea7b0686ba22bcac898a43488cc
7
- data.tar.gz: 950488593a4b255d8196baf07dfdd04a85bd062cf7b612531b6253eb4118d77ab8209290f535621dd2dc6aec2a73f8079092d243aaa002411e855b6264a5c33a
6
+ metadata.gz: 1b02fd6e6d2bcfcafd407528257ae71a17232bc8238d1174624c0967f2d1c60b30904bb0e2ee4b6f2e8297a19999c51833bfd6104b1d11f5bf435c64a598b573
7
+ data.tar.gz: 893e7d2991544d816fc4873b6906d55d6a0dc64d3274fac9b689025e1c50ce86776308d8e51b3713b826bccb50aad094e250f8b69259c141492a43a8b97881c8
@@ -22,6 +22,8 @@ AllCops:
22
22
  - vendor/**/*
23
23
  - tmp/**/*
24
24
 
25
+ Layout/BeginEndAlignment:
26
+ Enabled: true
25
27
  Layout/EmptyComment:
26
28
  Enabled: false
27
29
  Layout/EmptyLinesAroundAttributeAccessor:
@@ -50,26 +52,84 @@ Layout/MultilineOperationIndentation:
50
52
  EnforcedStyle: indented
51
53
  Layout/SpaceAroundMethodCallOperator:
52
54
  Enabled: true
55
+ Layout/SpaceInsideHashLiteralBraces:
56
+ Enabled: true
57
+ Exclude:
58
+ - test/**/*.rb
53
59
 
54
- Lint/NestedPercentLiteral:
60
+ Lint/BinaryOperatorWithIdenticalOperands:
61
+ Enabled: true
62
+ Lint/ConstantDefinitionInBlock:
63
+ Enabled: true
55
64
  Exclude:
56
- - test/test_site.rb
65
+ - test/**/*.rb
57
66
  Lint/DeprecatedOpenSSLConstant:
58
67
  Enabled: true
68
+ Lint/DuplicateBranch:
69
+ Enabled: true
70
+ Lint/DuplicateElsifCondition:
71
+ Enabled: true
72
+ Lint/DuplicateRegexpCharacterClassElement:
73
+ Enabled: true
74
+ Lint/DuplicateRescueException:
75
+ Enabled: true
76
+ Lint/DuplicateRequire:
77
+ Enabled: true
78
+ Lint/EmptyBlock:
79
+ Enabled: true
80
+ Lint/EmptyClass:
81
+ Enabled: true
82
+ Lint/EmptyConditionalBody:
83
+ Enabled: true
84
+ Lint/EmptyFile:
85
+ Enabled: true
86
+ Lint/FloatComparison:
87
+ Enabled: true
88
+ Lint/HashCompareByIdentity:
89
+ Enabled: true
90
+ Lint/IdentityComparison:
91
+ Enabled: true
92
+ Lint/MissingSuper:
93
+ Enabled: false
59
94
  Lint/MixedRegexpCaptureTypes:
60
95
  Enabled: false
96
+ Lint/NestedPercentLiteral:
97
+ Exclude:
98
+ - test/test_site.rb
99
+ Lint/NoReturnInBeginEndBlocks:
100
+ Enabled: true
101
+ Lint/OutOfRangeRegexpRef:
102
+ Enabled: true
61
103
  Lint/RaiseException:
62
104
  Enabled: true
105
+ Lint/RedundantSafeNavigation:
106
+ Enabled: true
107
+ Lint/SelfAssignment:
108
+ Enabled: true
63
109
  Lint/StructNewOverride:
64
110
  Enabled: true
111
+ Lint/ToEnumArguments:
112
+ Enabled: false
113
+ Lint/TopLevelReturnWithArgument:
114
+ Enabled: true
115
+ Lint/TrailingCommaInAttributeDeclaration:
116
+ Enabled: true
117
+ Lint/UnmodifiedReduceAccumulator:
118
+ Enabled: true
65
119
  Lint/UnreachableCode:
66
120
  Severity: error
121
+ Lint/UnreachableLoop:
122
+ Enabled: true
123
+ Lint/UselessMethodDefinition:
124
+ Enabled: true
125
+ Lint/UselessTimes:
126
+ Enabled: true
67
127
  Lint/Void:
68
128
  Exclude:
69
129
  - lib/jekyll/site.rb
70
130
 
71
131
  Metrics/AbcSize:
72
- Max: 21
132
+ Max: 23
73
133
  Metrics/BlockLength:
74
134
  Exclude:
75
135
  - test/**/*.rb
@@ -100,7 +160,7 @@ Metrics/ModuleLength:
100
160
  Metrics/ParameterLists:
101
161
  Max: 4
102
162
  Metrics/PerceivedComplexity:
103
- Max: 8
163
+ Max: 13
104
164
 
105
165
  Naming/FileName:
106
166
  Enabled: false
@@ -114,6 +174,39 @@ Naming/MemoizedInstanceVariableName:
114
174
  - lib/jekyll/drops/unified_payload_drop.rb
115
175
  - lib/jekyll/page_without_a_file.rb
116
176
 
177
+ Performance/AncestorsInclude:
178
+ Enabled: false
179
+ Performance/ArraySemiInfiniteRangeSlice:
180
+ Enabled: true
181
+ Performance/BigDecimalWithNumericArgument:
182
+ Enabled: true
183
+ Performance/BlockGivenWithExplicitBlock:
184
+ Enabled: true
185
+ Performance/ChainArrayAllocation:
186
+ Enabled: true
187
+ Performance/CollectionLiteralInLoop:
188
+ Enabled: true
189
+ Performance/ConstantRegexp:
190
+ Enabled: true
191
+ Performance/MethodObjectAsBlock:
192
+ Enabled: true
193
+ Performance/RedundantSortBlock:
194
+ Enabled: true
195
+ Performance/RedundantStringChars:
196
+ Enabled: true
197
+ Performance/ReverseFirst:
198
+ Enabled: true
199
+ Performance/SortReverse:
200
+ Enabled: false
201
+ Performance/Squeeze:
202
+ Enabled: true
203
+ Performance/StringInclude:
204
+ Enabled: true
205
+ Exclude:
206
+ - lib/jekyll/utils/platforms.rb
207
+ Performance/Sum:
208
+ Enabled: true
209
+
117
210
  Security/MarshalLoad:
118
211
  Exclude:
119
212
  - !ruby/regexp /test\/.*.rb$/
@@ -123,21 +216,41 @@ Security/YAMLLoad:
123
216
  - !ruby/regexp /features\/.*.rb/
124
217
  - !ruby/regexp /test\/.*.rb$/
125
218
 
219
+ Style/ArgumentsForwarding:
220
+ Enabled: false
221
+ Style/ArrayCoercion:
222
+ Enabled: true
126
223
  Style/AccessModifierDeclarations:
127
224
  Enabled: false
225
+ Style/AccessorGrouping:
226
+ Enabled: false
128
227
  Style/Alias:
129
228
  EnforcedStyle: prefer_alias_method
130
229
  Style/AndOr:
131
230
  Severity: error
231
+ Style/BisectedAttrAccessor:
232
+ Enabled: true
233
+ Style/CaseLikeIf:
234
+ Enabled: true
132
235
  Style/ClassAndModuleChildren:
133
236
  Exclude:
134
237
  - test/**/*.rb
238
+ Style/ClassEqualityComparison:
239
+ Enabled: true
240
+ Style/CollectionCompact:
241
+ Enabled: true
242
+ Style/CombinableLoops:
243
+ Enabled: true
135
244
  Style/Documentation:
136
245
  Enabled: false
246
+ Style/DocumentDynamicEvalDefinition:
247
+ Enabled: true
137
248
  Style/DoubleNegation:
138
249
  Enabled: false
139
250
  Style/ExponentialNotation:
140
251
  Enabled: true
252
+ Style/ExplicitBlockArgument:
253
+ Enabled: false
141
254
  Style/FormatStringToken:
142
255
  Exclude:
143
256
  - lib/jekyll/utils/ansi.rb
@@ -145,10 +258,16 @@ Style/FormatStringToken:
145
258
  - lib/jekyll/profiler.rb
146
259
  Style/FrozenStringLiteralComment:
147
260
  EnforcedStyle: always
261
+ Style/GlobalStdStream:
262
+ Enabled: true
148
263
  Style/GuardClause:
149
264
  Enabled: false
265
+ Style/HashAsLastArrayItem:
266
+ Enabled: true
150
267
  Style/HashEachMethods:
151
268
  Enabled: true
269
+ Style/HashLikeCase:
270
+ Enabled: true
152
271
  Style/HashSyntax:
153
272
  EnforcedStyle: hash_rockets
154
273
  Severity: error
@@ -156,6 +275,8 @@ Style/HashTransformKeys:
156
275
  Enabled: false
157
276
  Style/HashTransformValues:
158
277
  Enabled: true
278
+ Style/KeywordParametersOrder:
279
+ Enabled: true
159
280
  Style/MixinUsage:
160
281
  Exclude:
161
282
  - test/helper.rb
@@ -163,6 +284,12 @@ Style/ModuleFunction:
163
284
  Enabled: false
164
285
  Style/MultilineTernaryOperator:
165
286
  Severity: error
287
+ Style/NegatedIfElseCondition:
288
+ Enabled: true
289
+ Style/NilLambda:
290
+ Enabled: true
291
+ Style/OptionalBooleanParameter:
292
+ Enabled: true
166
293
  Style/PercentLiteralDelimiters:
167
294
  PreferredDelimiters:
168
295
  "%q": "{}"
@@ -172,12 +299,20 @@ Style/PercentLiteralDelimiters:
172
299
  "%w": "()"
173
300
  "%W": "()"
174
301
  "%x": "()"
302
+ Style/RedundantArgument:
303
+ Enabled: true
304
+ Style/RedundantAssignment:
305
+ Enabled: true
175
306
  Style/RedundantFetchBlock:
176
307
  Enabled: false
308
+ Style/RedundantFileExtensionInRequire:
309
+ Enabled: true
177
310
  Style/RedundantRegexpCharacterClass:
178
311
  Enabled: true
179
312
  Style/RedundantRegexpEscape:
180
313
  Enabled: true
314
+ Style/RedundantSelfAssignment:
315
+ Enabled: true
181
316
  Style/RegexpLiteral:
182
317
  EnforcedStyle: percent_r
183
318
  Style/RescueModifier:
@@ -187,12 +322,23 @@ Style/SafeNavigation:
187
322
  - lib/jekyll/document.rb
188
323
  Style/SignalException:
189
324
  EnforcedStyle: only_raise
325
+ Style/SingleArgumentDig:
326
+ Enabled: true
190
327
  Style/SlicingWithRange:
191
328
  Enabled: false
329
+ Style/SoleNestedConditional:
330
+ Enabled: true
192
331
  Style/StringLiterals:
193
332
  EnforcedStyle: double_quotes
333
+ Style/StringConcatenation:
334
+ Enabled: true
335
+ Exclude:
336
+ - lib/jekyll/commands/*.rb
337
+ - test/**/*.rb
194
338
  Style/StringLiteralsInInterpolation:
195
339
  EnforcedStyle: double_quotes
340
+ Style/SwapValues:
341
+ Enabled: true
196
342
  Style/SymbolArray:
197
343
  EnforcedStyle: brackets
198
344
  Style/TrailingCommaInArrayLiteral:
@@ -1,19 +1,15 @@
1
1
  # [Jekyll](https://jekyllrb.com/)
2
2
 
3
3
  [![Gem Version](https://img.shields.io/gem/v/jekyll.svg)][ruby-gems]
4
- [![Linux Build Status](https://img.shields.io/travis/jekyll/jekyll/master.svg?label=Linux%20build)][travis]
4
+ [![Linux Build Status](https://github.com/jekyll/jekyll/workflows/Continuous%20Integration/badge.svg)][ci-workflow]
5
5
  [![Windows Build status](https://img.shields.io/appveyor/ci/jekyll/jekyll/master.svg?label=Windows%20build)][appveyor]
6
- [![Maintainability](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/maintainability)][codeclimate]
7
- [![Test Coverage](https://api.codeclimate.com/v1/badges/8ba0cb5b17bb9848e128/test_coverage)][coverage]
8
6
  [![Security](https://hakiri.io/github/jekyll/jekyll/master.svg)][hakiri]
9
7
  [![Backers on Open Collective](https://opencollective.com/jekyll/backers/badge.svg)](#backers)
10
8
  [![Sponsors on Open Collective](https://opencollective.com/jekyll/sponsors/badge.svg)](#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
- [travis]: https://travis-ci.org/jekyll/jekyll
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.
@@ -7,6 +7,6 @@
7
7
  <link rel="stylesheet" href="{{ "/assets/css/main.css" | relative_url }}">
8
8
  </head>
9
9
  <body>
10
- {{ content}}
10
+ {{ content }}
11
11
  </body>
12
12
  </html>
@@ -173,23 +173,9 @@ module Jekyll
173
173
  # Returns the sanitized path.
174
174
  def sanitized_path(base_directory, questionable_path)
175
175
  return base_directory if base_directory.eql?(questionable_path)
176
+ return base_directory if questionable_path.nil?
176
177
 
177
- clean_path = questionable_path.dup
178
- clean_path.insert(0, "/") if clean_path.start_with?("~")
179
- clean_path = File.expand_path(clean_path, "/")
180
-
181
- return clean_path if clean_path.eql?(base_directory)
182
-
183
- # remove any remaining extra leading slashes not stripped away by calling
184
- # `File.expand_path` above.
185
- clean_path.squeeze!("/")
186
-
187
- if clean_path.start_with?(base_directory.sub(%r!\z!, "/"))
188
- clean_path
189
- else
190
- clean_path.sub!(%r!\A\w:/!, "/")
191
- File.join(base_directory, clean_path)
192
- end
178
+ +Jekyll::PathManager.sanitized_path(base_directory, questionable_path)
193
179
  end
194
180
 
195
181
  # Conditional optimizations
@@ -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 =~ HIDDEN_FILE_REGEX || file =~ regex || dirs.include?(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
- urls = {}
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:", "The URL '#{url}' is the destination" \
78
- " for the following pages: #{paths.join(", ")}"
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 " " + <<-STR.strip.gsub(%r!\n\s+!, "\n ")
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 collect_urls(urls, things, destination)
126
- things.each do |thing|
127
- dest = thing.destination(destination)
128
- if urls[dest]
129
- urls[dest] << thing.path
130
- else
131
- urls[dest] = [thing.path]
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
- urls
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)
@@ -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
@@ -249,6 +249,9 @@ module Jekyll
249
249
 
250
250
  def default_url(opts)
251
251
  config = configuration_from_options(opts)
252
+ auth = config.values_at("host", "port").join(":")
253
+ return config["url"] if auth == "127.0.0.1:4000"
254
+
252
255
  format_url(
253
256
  config["ssl_cert"] && config["ssl_key"],
254
257
  config["host"] == "127.0.0.1" ? "localhost" : config["host"],
@@ -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
- case permalink_style.to_sym
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)