jekyll 4.0.0.pre.alpha1 → 4.1.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 +4 -4
- data/.rubocop.yml +58 -17
- data/lib/jekyll.rb +5 -1
- data/lib/jekyll/cache.rb +71 -64
- data/lib/jekyll/cleaner.rb +5 -5
- data/lib/jekyll/collection.rb +6 -4
- data/lib/jekyll/command.rb +4 -2
- data/lib/jekyll/commands/new.rb +4 -4
- data/lib/jekyll/commands/serve.rb +9 -1
- data/lib/jekyll/commands/serve/servlet.rb +13 -14
- data/lib/jekyll/commands/serve/websockets.rb +1 -1
- data/lib/jekyll/configuration.rb +40 -129
- data/lib/jekyll/converters/identity.rb +2 -2
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +70 -9
- data/lib/jekyll/convertible.rb +21 -20
- data/lib/jekyll/document.rb +56 -31
- data/lib/jekyll/drops/document_drop.rb +12 -0
- data/lib/jekyll/drops/drop.rb +14 -8
- data/lib/jekyll/drops/site_drop.rb +11 -1
- data/lib/jekyll/drops/url_drop.rb +52 -1
- data/lib/jekyll/entry_filter.rb +38 -44
- data/lib/jekyll/excerpt.rb +3 -3
- data/lib/jekyll/filters.rb +140 -22
- data/lib/jekyll/filters/url_filters.rb +41 -14
- data/lib/jekyll/frontmatter_defaults.rb +15 -20
- data/lib/jekyll/hooks.rb +2 -5
- data/lib/jekyll/inclusion.rb +32 -0
- data/lib/jekyll/liquid_renderer.rb +18 -15
- data/lib/jekyll/liquid_renderer/file.rb +10 -0
- data/lib/jekyll/liquid_renderer/table.rb +18 -61
- data/lib/jekyll/mime.types +53 -11
- data/lib/jekyll/page.rb +26 -2
- data/lib/jekyll/page_excerpt.rb +25 -0
- data/lib/jekyll/path_manager.rb +31 -0
- data/lib/jekyll/profiler.rb +58 -0
- data/lib/jekyll/reader.rb +4 -1
- data/lib/jekyll/readers/collection_reader.rb +1 -0
- data/lib/jekyll/readers/data_reader.rb +1 -0
- data/lib/jekyll/readers/layout_reader.rb +1 -0
- data/lib/jekyll/readers/page_reader.rb +5 -5
- data/lib/jekyll/readers/post_reader.rb +2 -1
- data/lib/jekyll/readers/static_file_reader.rb +3 -3
- data/lib/jekyll/readers/theme_assets_reader.rb +1 -0
- data/lib/jekyll/renderer.rb +9 -15
- data/lib/jekyll/site.rb +21 -12
- data/lib/jekyll/static_file.rb +15 -10
- data/lib/jekyll/tags/highlight.rb +2 -4
- data/lib/jekyll/tags/include.rb +67 -11
- data/lib/jekyll/tags/post_url.rb +8 -5
- data/lib/jekyll/theme.rb +19 -10
- data/lib/jekyll/url.rb +7 -3
- data/lib/jekyll/utils.rb +14 -18
- data/lib/jekyll/utils/platforms.rb +1 -1
- data/lib/jekyll/utils/win_tz.rb +1 -1
- data/lib/jekyll/version.rb +1 -1
- data/lib/theme_template/theme.gemspec.erb +1 -4
- metadata +33 -36
data/lib/jekyll/collection.rb
CHANGED
@@ -75,11 +75,13 @@ module Jekyll
|
|
75
75
|
def entries
|
76
76
|
return [] unless exists?
|
77
77
|
|
78
|
-
@entries ||=
|
78
|
+
@entries ||= begin
|
79
|
+
collection_dir_slash = "#{collection_dir}/"
|
79
80
|
Utils.safe_glob(collection_dir, ["**", "*"], File::FNM_DOTMATCH).map do |entry|
|
80
|
-
entry[
|
81
|
+
entry[collection_dir_slash] = ""
|
81
82
|
entry
|
82
83
|
end
|
84
|
+
end
|
83
85
|
end
|
84
86
|
|
85
87
|
# Filtered version of the entries in this collection.
|
@@ -164,7 +166,7 @@ module Jekyll
|
|
164
166
|
#
|
165
167
|
# Returns a sanitized version of the label.
|
166
168
|
def sanitize_label(label)
|
167
|
-
label.gsub(%r![^a-z0-9_
|
169
|
+
label.gsub(%r![^a-z0-9_\-.]!i, "")
|
168
170
|
end
|
169
171
|
|
170
172
|
# Produce a representation of this Collection for use in Liquid.
|
@@ -237,7 +239,7 @@ module Jekyll
|
|
237
239
|
|
238
240
|
# Fall back to `Document#<=>` if the properties were equal or were non-sortable
|
239
241
|
# Otherwise continue with current sort-order
|
240
|
-
if order.
|
242
|
+
if order.nil? || order.zero?
|
241
243
|
apples[-1] <=> olives[-1]
|
242
244
|
else
|
243
245
|
order
|
data/lib/jekyll/command.rb
CHANGED
@@ -67,6 +67,8 @@ module Jekyll
|
|
67
67
|
cmd.option "show_drafts", "-D", "--drafts", "Render posts in the _drafts folder"
|
68
68
|
cmd.option "unpublished", "--unpublished",
|
69
69
|
"Render posts that were marked as unpublished"
|
70
|
+
cmd.option "disable_disk_cache", "--disable-disk-cache",
|
71
|
+
"Disable caching to disk in non-safe mode"
|
70
72
|
cmd.option "quiet", "-q", "--quiet", "Silence output."
|
71
73
|
cmd.option "verbose", "-V", "--verbose", "Print verbose output."
|
72
74
|
cmd.option "incremental", "-I", "--incremental", "Enable incremental rebuild."
|
@@ -84,7 +86,7 @@ module Jekyll
|
|
84
86
|
# klass - an array of Jekyll::Command subclasses associated with the command
|
85
87
|
#
|
86
88
|
# Note that all exceptions are rescued..
|
87
|
-
# rubocop: disable RescueException
|
89
|
+
# rubocop: disable Lint/RescueException
|
88
90
|
def process_with_graceful_fail(cmd, options, *klass)
|
89
91
|
klass.each { |k| k.process(options) if k.respond_to?(:process) }
|
90
92
|
rescue Exception => e
|
@@ -97,7 +99,7 @@ module Jekyll
|
|
97
99
|
Jekyll.logger.error "", " for any additional information or backtrace. "
|
98
100
|
Jekyll.logger.abort_with "", dashes
|
99
101
|
end
|
100
|
-
# rubocop: enable RescueException
|
102
|
+
# rubocop: enable Lint/RescueException
|
101
103
|
end
|
102
104
|
end
|
103
105
|
end
|
data/lib/jekyll/commands/new.rb
CHANGED
@@ -80,24 +80,24 @@ module Jekyll
|
|
80
80
|
# Happy Jekylling!
|
81
81
|
gem "jekyll", "~> #{Jekyll::VERSION}"
|
82
82
|
# This is the default theme for new Jekyll sites. You may change this to anything you like.
|
83
|
-
gem "minima", "~> 2.
|
83
|
+
gem "minima", "~> 2.5"
|
84
84
|
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
85
85
|
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
86
86
|
# gem "github-pages", group: :jekyll_plugins
|
87
87
|
# If you have any plugins, put them here!
|
88
88
|
group :jekyll_plugins do
|
89
|
-
gem "jekyll-feed", "~> 0.
|
89
|
+
gem "jekyll-feed", "~> 0.12"
|
90
90
|
end
|
91
91
|
|
92
92
|
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
93
93
|
# and associated library.
|
94
|
-
|
94
|
+
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
95
95
|
gem "tzinfo", "~> 1.2"
|
96
96
|
gem "tzinfo-data"
|
97
97
|
end
|
98
98
|
|
99
99
|
# Performance-booster for watching directories on Windows
|
100
|
-
gem "wdm", "~> 0.1.1", :
|
100
|
+
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
101
101
|
|
102
102
|
RUBY
|
103
103
|
end
|
@@ -307,7 +307,15 @@ module Jekyll
|
|
307
307
|
require "webrick/https"
|
308
308
|
|
309
309
|
opts[:SSLCertificate] = OpenSSL::X509::Certificate.new(read_file(src, cert))
|
310
|
-
|
310
|
+
begin
|
311
|
+
opts[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(read_file(src, key))
|
312
|
+
rescue StandardError
|
313
|
+
if defined?(OpenSSL::PKey::EC)
|
314
|
+
opts[:SSLPrivateKey] = OpenSSL::PKey::EC.new(read_file(src, key))
|
315
|
+
else
|
316
|
+
raise
|
317
|
+
end
|
318
|
+
end
|
311
319
|
opts[:SSLEnable] = true
|
312
320
|
end
|
313
321
|
|
@@ -29,15 +29,15 @@ module Jekyll
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def inline?
|
32
|
-
@response["Content-Disposition"]
|
32
|
+
@response["Content-Disposition"].to_s.start_with?("inline")
|
33
33
|
end
|
34
34
|
|
35
35
|
def bad_browser?
|
36
|
-
BAD_USER_AGENTS.any? { |pattern| @request["User-Agent"]
|
36
|
+
BAD_USER_AGENTS.any? { |pattern| pattern.match?(@request["User-Agent"]) }
|
37
37
|
end
|
38
38
|
|
39
39
|
def html?
|
40
|
-
@response["Content-Type"]
|
40
|
+
@response["Content-Type"].to_s.include?("text/html")
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -98,17 +98,16 @@ module Jekyll
|
|
98
98
|
# Complicated JavaScript to ensure that livereload.js is loaded from the
|
99
99
|
# same origin as the page. Mostly useful for dealing with the browser's
|
100
100
|
# distinction between 'localhost' and 127.0.0.1
|
101
|
-
template
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
101
|
+
@template ||= ERB.new(<<~TEMPLATE)
|
102
|
+
<script>
|
103
|
+
document.write(
|
104
|
+
'<script src="http://' +
|
105
|
+
(location.host || 'localhost').split(':')[0] +
|
106
|
+
':<%=@options["livereload_port"] %>/livereload.js?snipver=1<%= livereload_args %>"' +
|
107
|
+
'></' +
|
108
|
+
'script>');
|
109
|
+
</script>
|
110
110
|
TEMPLATE
|
111
|
-
ERB.new(Jekyll::Utils.strip_heredoc(template))
|
112
111
|
end
|
113
112
|
|
114
113
|
def livereload_args
|
@@ -186,7 +185,7 @@ module Jekyll
|
|
186
185
|
key = res.header.keys.grep(%r!content-type!i).first
|
187
186
|
typ = res.header[key]
|
188
187
|
|
189
|
-
unless
|
188
|
+
unless %r!;\s*charset=!.match?(typ)
|
190
189
|
res.header[key] = "#{typ}; charset=#{@jekyll_opts["encoding"]}"
|
191
190
|
end
|
192
191
|
end
|
@@ -46,7 +46,7 @@ module Jekyll
|
|
46
46
|
# WebSockets requests will have a Connection: Upgrade header
|
47
47
|
if parser.http_method != "GET" || parser.upgrade?
|
48
48
|
super
|
49
|
-
elsif parser.request_url
|
49
|
+
elsif parser.request_url.start_with?("/livereload.js")
|
50
50
|
headers = [
|
51
51
|
"HTTP/1.1 200 OK",
|
52
52
|
"Content-Type: application/javascript",
|
data/lib/jekyll/configuration.rb
CHANGED
@@ -4,7 +4,7 @@ module Jekyll
|
|
4
4
|
class Configuration < Hash
|
5
5
|
# Default options. Overridden by values in _config.yml.
|
6
6
|
# Strings rather than symbols are used for compatibility with YAML.
|
7
|
-
DEFAULTS =
|
7
|
+
DEFAULTS = {
|
8
8
|
# Where things are
|
9
9
|
"source" => Dir.pwd,
|
10
10
|
"destination" => File.join(Dir.pwd, "_site"),
|
@@ -66,7 +66,7 @@ module Jekyll
|
|
66
66
|
|
67
67
|
"kramdown" => {
|
68
68
|
"auto_ids" => true,
|
69
|
-
"toc_levels" =>
|
69
|
+
"toc_levels" => (1..6).to_a,
|
70
70
|
"entity_output" => "as_char",
|
71
71
|
"smart_quotes" => "lsquo,rsquo,ldquo,rdquo",
|
72
72
|
"input" => "GFM",
|
@@ -75,19 +75,15 @@ module Jekyll
|
|
75
75
|
"footnote_nr" => 1,
|
76
76
|
"show_warnings" => false,
|
77
77
|
},
|
78
|
-
}.
|
78
|
+
}.each_with_object(Configuration.new) { |(k, v), hsh| hsh[k] = v.freeze }.freeze
|
79
79
|
|
80
80
|
class << self
|
81
81
|
# Static: Produce a Configuration ready for use in a Site.
|
82
|
-
# It takes the input, fills in the defaults where values do not
|
83
|
-
# exist, and patches common issues including migrating options for
|
84
|
-
# backwards compatiblity. Except where a key or value is being fixed,
|
85
|
-
# the user configuration will override the defaults.
|
82
|
+
# It takes the input, fills in the defaults where values do not exist.
|
86
83
|
#
|
87
84
|
# user_config - a Hash or Configuration of overrides.
|
88
85
|
#
|
89
|
-
# Returns a Configuration filled with defaults
|
90
|
-
# problems and backwards-compatibility.
|
86
|
+
# Returns a Configuration filled with defaults.
|
91
87
|
def from(user_config)
|
92
88
|
Utils.deep_merge_hashes(DEFAULTS, Configuration[user_config].stringify_keys)
|
93
89
|
.add_default_collections.add_default_excludes
|
@@ -98,7 +94,7 @@ module Jekyll
|
|
98
94
|
#
|
99
95
|
# Return a copy of the hash where all its keys are strings
|
100
96
|
def stringify_keys
|
101
|
-
|
97
|
+
each_with_object({}) { |(k, v), hsh| hsh[k.to_s] = v }
|
102
98
|
end
|
103
99
|
|
104
100
|
def get_config_value_with_override(config_key, override)
|
@@ -132,8 +128,8 @@ module Jekyll
|
|
132
128
|
when %r!\.ya?ml!i
|
133
129
|
SafeYAML.load_file(filename) || {}
|
134
130
|
else
|
135
|
-
raise ArgumentError,
|
136
|
-
|
131
|
+
raise ArgumentError,
|
132
|
+
"No parser for '#{filename}' is available. Use a .y(a)ml or .toml file instead."
|
137
133
|
end
|
138
134
|
end
|
139
135
|
|
@@ -169,7 +165,11 @@ module Jekyll
|
|
169
165
|
def read_config_file(file)
|
170
166
|
file = File.expand_path(file)
|
171
167
|
next_config = safe_load_file(file)
|
172
|
-
|
168
|
+
|
169
|
+
unless next_config.is_a?(Hash)
|
170
|
+
raise ArgumentError, "Configuration file: (INVALID) #{file}".yellow
|
171
|
+
end
|
172
|
+
|
173
173
|
Jekyll.logger.info "Configuration file:", file
|
174
174
|
next_config
|
175
175
|
rescue SystemCallError
|
@@ -177,8 +177,7 @@ module Jekyll
|
|
177
177
|
Jekyll.logger.warn "Configuration file:", "none"
|
178
178
|
{}
|
179
179
|
else
|
180
|
-
Jekyll.logger.error "Fatal:", "The configuration file '#{file}'
|
181
|
-
could not be found."
|
180
|
+
Jekyll.logger.error "Fatal:", "The configuration file '#{file}' could not be found."
|
182
181
|
raise LoadError, "The Configuration file '#{file}' could not be found."
|
183
182
|
end
|
184
183
|
end
|
@@ -199,13 +198,12 @@ module Jekyll
|
|
199
198
|
new_config = read_config_file(config_file)
|
200
199
|
configuration = Utils.deep_merge_hashes(configuration, new_config)
|
201
200
|
end
|
202
|
-
rescue ArgumentError =>
|
203
|
-
Jekyll.logger.warn "WARNING:", "Error reading configuration. "
|
204
|
-
|
205
|
-
warn err
|
201
|
+
rescue ArgumentError => e
|
202
|
+
Jekyll.logger.warn "WARNING:", "Error reading configuration. Using defaults (and options)."
|
203
|
+
warn e
|
206
204
|
end
|
207
205
|
|
208
|
-
configuration.
|
206
|
+
configuration.validate.add_default_collections
|
209
207
|
end
|
210
208
|
|
211
209
|
# Public: Split a CSV string into an array containing its values
|
@@ -217,35 +215,18 @@ module Jekyll
|
|
217
215
|
csv.split(",").map(&:strip)
|
218
216
|
end
|
219
217
|
|
220
|
-
# Public: Ensure the proper options are set in the configuration
|
221
|
-
# backwards-compatibility with Jekyll pre-1.0
|
218
|
+
# Public: Ensure the proper options are set in the configuration
|
222
219
|
#
|
223
|
-
# Returns the
|
224
|
-
def
|
220
|
+
# Returns the configuration Hash
|
221
|
+
def validate
|
225
222
|
config = clone
|
226
|
-
# Provide backwards-compatibility
|
227
|
-
check_auto(config)
|
228
|
-
check_server(config)
|
229
|
-
check_plugins(config)
|
230
223
|
|
231
|
-
|
232
|
-
renamed_key "gems", "plugins", config
|
233
|
-
renamed_key "layouts", "layouts_dir", config
|
234
|
-
renamed_key "data_source", "data_dir", config
|
235
|
-
|
236
|
-
check_pygments(config)
|
224
|
+
check_plugins(config)
|
237
225
|
check_include_exclude(config)
|
238
|
-
check_coderay(config)
|
239
|
-
check_maruku(config)
|
240
226
|
|
241
227
|
config
|
242
228
|
end
|
243
229
|
|
244
|
-
# DEPRECATED.
|
245
|
-
def fix_common_issues
|
246
|
-
self
|
247
|
-
end
|
248
|
-
|
249
230
|
def add_default_collections
|
250
231
|
config = clone
|
251
232
|
|
@@ -254,7 +235,9 @@ module Jekyll
|
|
254
235
|
|
255
236
|
# Ensure we have a hash.
|
256
237
|
if config["collections"].is_a?(Array)
|
257
|
-
config["collections"] =
|
238
|
+
config["collections"] = config["collections"].each_with_object({}) do |collection, hash|
|
239
|
+
hash[collection] = {}
|
240
|
+
end
|
258
241
|
end
|
259
242
|
|
260
243
|
config["collections"] = Utils.deep_merge_hashes(
|
@@ -284,15 +267,6 @@ module Jekyll
|
|
284
267
|
config
|
285
268
|
end
|
286
269
|
|
287
|
-
def renamed_key(old, new, config)
|
288
|
-
if config.key?(old)
|
289
|
-
Jekyll::Deprecator.deprecation_message "The '#{old}' configuration" \
|
290
|
-
" option has been renamed to '#{new}'. Please update your config" \
|
291
|
-
" file accordingly."
|
292
|
-
config[new] = config.delete(old)
|
293
|
-
end
|
294
|
-
end
|
295
|
-
|
296
270
|
private
|
297
271
|
|
298
272
|
def style_to_permalink(permalink_style)
|
@@ -305,82 +279,20 @@ module Jekyll
|
|
305
279
|
"/:categories/:year/:month/:day/:title:output_ext"
|
306
280
|
when :ordinal
|
307
281
|
"/:categories/:year/:y_day/:title:output_ext"
|
282
|
+
when :weekdate
|
283
|
+
"/:categories/:year/W:week/:short_day/:title:output_ext"
|
308
284
|
else
|
309
285
|
permalink_style.to_s
|
310
286
|
end
|
311
287
|
end
|
312
288
|
|
313
|
-
# Private: Checks if a given config is a hash
|
314
|
-
#
|
315
|
-
# extracted_config - the value to check
|
316
|
-
# file - the file from which the config was extracted
|
317
|
-
#
|
318
|
-
# Raises an ArgumentError if given config is not a hash
|
319
|
-
def check_config_is_hash!(extracted_config, file)
|
320
|
-
unless extracted_config.is_a?(Hash)
|
321
|
-
raise ArgumentError, "Configuration file: (INVALID) #{file}".yellow
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
def check_auto(config)
|
326
|
-
if config.key?("auto") || config.key?("watch")
|
327
|
-
Jekyll::Deprecator.deprecation_message "Auto-regeneration can no longer" \
|
328
|
-
" be set from your configuration file(s). Use the" \
|
329
|
-
" --[no-]watch/-w command-line option instead."
|
330
|
-
config.delete("auto")
|
331
|
-
config.delete("watch")
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
|
-
def check_server(config)
|
336
|
-
if config.key?("server")
|
337
|
-
Jekyll::Deprecator.deprecation_message "The 'server' configuration option" \
|
338
|
-
" is no longer accepted. Use the 'jekyll serve'" \
|
339
|
-
" subcommand to serve your site with WEBrick."
|
340
|
-
config.delete("server")
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
def check_pygments(config)
|
345
|
-
if config.key?("pygments")
|
346
|
-
Jekyll::Deprecator.deprecation_message "The 'pygments' configuration option" \
|
347
|
-
" has been renamed to 'highlighter'. Please update your" \
|
348
|
-
" config file accordingly. The allowed values are 'rouge', " \
|
349
|
-
"'pygments' or null."
|
350
|
-
|
351
|
-
config["highlighter"] = "pygments" if config["pygments"]
|
352
|
-
config.delete("pygments")
|
353
|
-
end
|
354
|
-
end
|
355
|
-
|
356
289
|
def check_include_exclude(config)
|
357
290
|
%w(include exclude).each do |option|
|
358
|
-
|
359
|
-
|
360
|
-
" must now be specified as an array, but you specified" \
|
361
|
-
" a string. For now, we've treated the string you provided" \
|
362
|
-
" as a list of comma-separated values."
|
363
|
-
config[option] = csv_to_array(config[option])
|
364
|
-
end
|
365
|
-
config[option]&.map!(&:to_s)
|
366
|
-
end
|
367
|
-
end
|
291
|
+
next unless config.key?(option)
|
292
|
+
next if config[option].is_a?(Array)
|
368
293
|
|
369
|
-
|
370
|
-
|
371
|
-
Jekyll::Deprecator.deprecation_message "Please change 'use_coderay'" \
|
372
|
-
" to 'enable_coderay' in your configuration file."
|
373
|
-
config["kramdown"]["use_coderay"] = config["kramdown"].delete("enable_coderay")
|
374
|
-
end
|
375
|
-
end
|
376
|
-
|
377
|
-
def check_maruku(config)
|
378
|
-
if config.fetch("markdown", "kramdown").to_s.casecmp("maruku").zero?
|
379
|
-
Jekyll.logger.abort_with "Error:", "You're using the 'maruku' " \
|
380
|
-
"Markdown processor, which has been removed as of 3.0.0. " \
|
381
|
-
"We recommend you switch to Kramdown. To do this, replace " \
|
382
|
-
"`markdown: maruku` with `markdown: kramdown` in your " \
|
383
|
-
"`_config.yml` file."
|
294
|
+
raise Jekyll::Errors::InvalidConfigurationError,
|
295
|
+
"'#{option}' should be set as an array, but was: #{config[option].inspect}."
|
384
296
|
end
|
385
297
|
end
|
386
298
|
|
@@ -389,17 +301,16 @@ module Jekyll
|
|
389
301
|
# config - the config hash
|
390
302
|
#
|
391
303
|
# Raises a Jekyll::Errors::InvalidConfigurationError if the config `plugins`
|
392
|
-
# is
|
304
|
+
# is not an Array.
|
393
305
|
def check_plugins(config)
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
end
|
306
|
+
return unless config.key?("plugins")
|
307
|
+
return if config["plugins"].is_a?(Array)
|
308
|
+
|
309
|
+
Jekyll.logger.error "'plugins' should be set as an array of gem-names, but was: " \
|
310
|
+
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set the directory " \
|
311
|
+
"for your non-gemified Ruby plugins."
|
312
|
+
raise Jekyll::Errors::InvalidConfigurationError,
|
313
|
+
"'plugins' should be set as an array, but was: #{config["plugins"].inspect}."
|
403
314
|
end
|
404
315
|
end
|
405
316
|
end
|