jekyll 4.0.0.pre.alpha1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|