jekyll 4.0.0.pre.alpha1 → 4.0.0.pre.beta1
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 +4 -3
- data/lib/jekyll.rb +1 -0
- data/lib/jekyll/cache.rb +71 -64
- data/lib/jekyll/cleaner.rb +3 -3
- data/lib/jekyll/collection.rb +4 -2
- data/lib/jekyll/commands/serve/servlet.rb +13 -14
- data/lib/jekyll/commands/serve/websockets.rb +1 -1
- data/lib/jekyll/configuration.rb +33 -124
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +0 -8
- data/lib/jekyll/convertible.rb +1 -1
- data/lib/jekyll/document.rb +39 -28
- data/lib/jekyll/drops/drop.rb +14 -8
- data/lib/jekyll/drops/site_drop.rb +11 -1
- data/lib/jekyll/drops/url_drop.rb +43 -0
- data/lib/jekyll/entry_filter.rb +19 -36
- data/lib/jekyll/excerpt.rb +2 -2
- data/lib/jekyll/filters.rb +37 -6
- data/lib/jekyll/frontmatter_defaults.rb +5 -5
- data/lib/jekyll/liquid_renderer/table.rb +22 -2
- data/lib/jekyll/mime.types +53 -11
- data/lib/jekyll/page.rb +1 -1
- data/lib/jekyll/path_manager.rb +31 -0
- data/lib/jekyll/reader.rb +4 -1
- data/lib/jekyll/readers/page_reader.rb +4 -5
- data/lib/jekyll/readers/post_reader.rb +1 -1
- data/lib/jekyll/readers/static_file_reader.rb +2 -3
- data/lib/jekyll/site.rb +4 -4
- data/lib/jekyll/tags/highlight.rb +2 -4
- data/lib/jekyll/tags/include.rb +5 -4
- data/lib/jekyll/tags/post_url.rb +8 -5
- data/lib/jekyll/theme.rb +13 -2
- data/lib/jekyll/url.rb +7 -3
- data/lib/jekyll/utils.rb +9 -13
- data/lib/jekyll/utils/platforms.rb +1 -1
- data/lib/jekyll/version.rb +1 -1
- metadata +13 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 557bf944b97df515f8ac16b41b21317a4361fa27e45c44d63ea8579e14a8188e
|
4
|
+
data.tar.gz: 436685ee32413cf98111372ca82f1f39d38f549cc2cf482c86a1aba53e627b93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76c7cfa113e1a0741584a34be45ed4380e57250d1829d905d4aa1bba33ec06d6e1debf02a474ab36aca8f65ff1f4fca9cb97ce06c52e74715327267bb2bb5345
|
7
|
+
data.tar.gz: 4f25d89074b8aae2dfdcad4a56246b7541137e5a226040898e13b0f610acce79e8d8aaee0c63ea7aae185d09156b85643269440d6a02bc59dac8e2d26033e4af
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
|
3
3
|
require:
|
4
|
+
- rubocop-performance
|
4
5
|
- ./rubocop/jekyll
|
5
6
|
|
6
7
|
Jekyll/NoPutsAllowed:
|
@@ -8,7 +9,7 @@ Jekyll/NoPutsAllowed:
|
|
8
9
|
- rake/*.rake
|
9
10
|
|
10
11
|
AllCops:
|
11
|
-
TargetRubyVersion: 2.
|
12
|
+
TargetRubyVersion: 2.4
|
12
13
|
Include:
|
13
14
|
- lib/**/*.rb
|
14
15
|
- test/**/*.rb
|
@@ -23,9 +24,9 @@ Layout/AlignHash:
|
|
23
24
|
EnforcedHashRocketStyle: table
|
24
25
|
Layout/IndentationWidth:
|
25
26
|
Severity: error
|
26
|
-
Layout/
|
27
|
+
Layout/IndentFirstArrayElement:
|
27
28
|
EnforcedStyle: consistent
|
28
|
-
Layout/
|
29
|
+
Layout/IndentFirstHashElement:
|
29
30
|
EnforcedStyle: consistent
|
30
31
|
Layout/MultilineMethodCallIndentation:
|
31
32
|
EnforcedStyle: indented
|
data/lib/jekyll.rb
CHANGED
@@ -65,6 +65,7 @@ module Jekyll
|
|
65
65
|
autoload :LogAdapter, "jekyll/log_adapter"
|
66
66
|
autoload :Page, "jekyll/page"
|
67
67
|
autoload :PageWithoutAFile, "jekyll/page_without_a_file"
|
68
|
+
autoload :PathManager, "jekyll/path_manager"
|
68
69
|
autoload :PluginManager, "jekyll/plugin_manager"
|
69
70
|
autoload :Publisher, "jekyll/publisher"
|
70
71
|
autoload :Reader, "jekyll/reader"
|
data/lib/jekyll/cache.rb
CHANGED
@@ -4,9 +4,59 @@ require "digest"
|
|
4
4
|
|
5
5
|
module Jekyll
|
6
6
|
class Cache
|
7
|
-
#
|
8
|
-
|
9
|
-
|
7
|
+
# class-wide base cache
|
8
|
+
@base_cache = {}
|
9
|
+
|
10
|
+
# class-wide directive to write cache to disk is enabled by default
|
11
|
+
@disk_cache_enabled = true
|
12
|
+
|
13
|
+
class << self
|
14
|
+
# class-wide cache location
|
15
|
+
attr_accessor :cache_dir
|
16
|
+
|
17
|
+
# class-wide directive to write cache to disk
|
18
|
+
attr_reader :disk_cache_enabled
|
19
|
+
|
20
|
+
# class-wide base cache reader
|
21
|
+
attr_reader :base_cache
|
22
|
+
|
23
|
+
# Disable Marshaling cached items to disk
|
24
|
+
def disable_disk_cache!
|
25
|
+
@disk_cache_enabled = false
|
26
|
+
end
|
27
|
+
|
28
|
+
# Clear all caches
|
29
|
+
def clear
|
30
|
+
delete_cache_files
|
31
|
+
base_cache.each_value(&:clear)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Compare the current config to the cached config
|
35
|
+
# If they are different, clear all caches
|
36
|
+
#
|
37
|
+
# Returns nothing.
|
38
|
+
def clear_if_config_changed(config)
|
39
|
+
config = config.inspect
|
40
|
+
cache = Jekyll::Cache.new "Jekyll::Cache"
|
41
|
+
return if cache.key?("config") && cache["config"] == config
|
42
|
+
|
43
|
+
clear
|
44
|
+
cache = Jekyll::Cache.new "Jekyll::Cache"
|
45
|
+
cache["config"] = config
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
# Delete all cached items from all caches
|
52
|
+
#
|
53
|
+
# Returns nothing.
|
54
|
+
def delete_cache_files
|
55
|
+
FileUtils.rm_rf(@cache_dir) if disk_cache_enabled
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
#
|
10
60
|
|
11
61
|
# Get an existing named cache, or create a new one if none exists
|
12
62
|
#
|
@@ -14,27 +64,10 @@ module Jekyll
|
|
14
64
|
#
|
15
65
|
# Returns nothing.
|
16
66
|
def initialize(name)
|
17
|
-
@cache =
|
67
|
+
@cache = Jekyll::Cache.base_cache[name] ||= {}
|
18
68
|
@name = name.gsub(%r![^\w\s-]!, "-")
|
19
69
|
end
|
20
70
|
|
21
|
-
# Set class-wide base_dir
|
22
|
-
def self.base_dir=(dir_path)
|
23
|
-
@@base_dir = dir_path
|
24
|
-
end
|
25
|
-
|
26
|
-
# Disable Marshaling cached items to disk
|
27
|
-
def self.disable_disk_cache!
|
28
|
-
@@disk_cache_enabled = false
|
29
|
-
end
|
30
|
-
# rubocop:enable Style/ClassVars
|
31
|
-
|
32
|
-
# Clear all caches
|
33
|
-
def self.clear
|
34
|
-
delete_cache_files
|
35
|
-
@@caches.each_value(&:clear)
|
36
|
-
end
|
37
|
-
|
38
71
|
# Clear this particular cache
|
39
72
|
def clear
|
40
73
|
delete_cache_files
|
@@ -49,7 +82,7 @@ module Jekyll
|
|
49
82
|
return @cache[key] if @cache.key?(key)
|
50
83
|
|
51
84
|
path = path_to(hash(key))
|
52
|
-
if
|
85
|
+
if disk_cache_enabled? && File.file?(path) && File.readable?(path)
|
53
86
|
@cache[key] = load(path)
|
54
87
|
else
|
55
88
|
raise
|
@@ -61,7 +94,7 @@ module Jekyll
|
|
61
94
|
# Returns nothing.
|
62
95
|
def []=(key, value)
|
63
96
|
@cache[key] = value
|
64
|
-
return unless
|
97
|
+
return unless disk_cache_enabled?
|
65
98
|
|
66
99
|
path = path_to(hash(key))
|
67
100
|
value = new Hash(value) if value.is_a?(Hash) && !value.default.nil?
|
@@ -70,9 +103,8 @@ module Jekyll
|
|
70
103
|
Jekyll.logger.debug "Cache:", "Cannot dump object #{key}"
|
71
104
|
end
|
72
105
|
|
73
|
-
# If an item already exists in the cache, retrieve it
|
74
|
-
# Else execute code block, and add the result to the cache, and return that
|
75
|
-
# result
|
106
|
+
# If an item already exists in the cache, retrieve it.
|
107
|
+
# Else execute code block, and add the result to the cache, and return that result.
|
76
108
|
def getset(key)
|
77
109
|
self[key]
|
78
110
|
rescue StandardError
|
@@ -86,10 +118,7 @@ module Jekyll
|
|
86
118
|
# Returns nothing.
|
87
119
|
def delete(key)
|
88
120
|
@cache.delete(key)
|
89
|
-
|
90
|
-
|
91
|
-
path = path_to(hash(key))
|
92
|
-
File.delete(path)
|
121
|
+
File.delete(path_to(hash(key))) if disk_cache_enabled?
|
93
122
|
end
|
94
123
|
|
95
124
|
# Check if `key` already exists in this cache
|
@@ -100,40 +129,27 @@ module Jekyll
|
|
100
129
|
return true if @cache.key?(key)
|
101
130
|
# Otherwise, it might be cached on disk
|
102
131
|
# but we should not consider the disk cache if it is disabled
|
103
|
-
return false unless
|
132
|
+
return false unless disk_cache_enabled?
|
104
133
|
|
105
134
|
path = path_to(hash(key))
|
106
135
|
File.file?(path) && File.readable?(path)
|
107
136
|
end
|
108
137
|
|
109
|
-
|
110
|
-
|
111
|
-
#
|
112
|
-
# Returns nothing.
|
113
|
-
def self.clear_if_config_changed(config)
|
114
|
-
config = config.inspect
|
115
|
-
cache = Jekyll::Cache.new "Jekyll::Cache"
|
116
|
-
return if cache.key?("config") && cache["config"] == config
|
117
|
-
|
118
|
-
clear
|
119
|
-
cache = Jekyll::Cache.new "Jekyll::Cache"
|
120
|
-
cache["config"] = config
|
121
|
-
nil
|
138
|
+
def disk_cache_enabled?
|
139
|
+
!!Jekyll::Cache.disk_cache_enabled
|
122
140
|
end
|
123
141
|
|
124
142
|
private
|
125
143
|
|
126
|
-
# Given a hashed key, return the path to where this item would be saved on
|
127
|
-
# disk
|
144
|
+
# Given a hashed key, return the path to where this item would be saved on disk.
|
128
145
|
def path_to(hash = nil)
|
129
|
-
@base_dir ||= File.join(
|
146
|
+
@base_dir ||= File.join(Jekyll::Cache.cache_dir, @name)
|
130
147
|
return @base_dir if hash.nil?
|
131
148
|
|
132
149
|
File.join(@base_dir, hash[0..1], hash[2..-1]).freeze
|
133
150
|
end
|
134
151
|
|
135
|
-
# Given a key, return a SHA2 hash that can be used for caching this item to
|
136
|
-
# disk
|
152
|
+
# Given a key, return a SHA2 hash that can be used for caching this item to disk.
|
137
153
|
def hash(key)
|
138
154
|
Digest::SHA2.hexdigest(key).freeze
|
139
155
|
end
|
@@ -142,22 +158,14 @@ module Jekyll
|
|
142
158
|
#
|
143
159
|
# Returns nothing.
|
144
160
|
def delete_cache_files
|
145
|
-
FileUtils.rm_rf(path_to) if
|
146
|
-
end
|
147
|
-
|
148
|
-
# Delete all cached items from all caches
|
149
|
-
#
|
150
|
-
# Returns nothing.
|
151
|
-
def self.delete_cache_files
|
152
|
-
FileUtils.rm_rf(@@base_dir) if @@disk_cache_enabled
|
161
|
+
FileUtils.rm_rf(path_to) if disk_cache_enabled?
|
153
162
|
end
|
154
|
-
private_class_method :delete_cache_files
|
155
163
|
|
156
|
-
# Load `path` from disk and return the result
|
164
|
+
# Load `path` from disk and return the result.
|
157
165
|
# This MUST NEVER be called in Safe Mode
|
158
166
|
# rubocop:disable Security/MarshalLoad
|
159
167
|
def load(path)
|
160
|
-
raise unless
|
168
|
+
raise unless disk_cache_enabled?
|
161
169
|
|
162
170
|
cached_file = File.open(path, "rb")
|
163
171
|
value = Marshal.load(cached_file)
|
@@ -166,15 +174,14 @@ module Jekyll
|
|
166
174
|
end
|
167
175
|
# rubocop:enable Security/MarshalLoad
|
168
176
|
|
169
|
-
# Given a path and a value, save value to disk at path
|
177
|
+
# Given a path and a value, save value to disk at path.
|
170
178
|
# This should NEVER be called in Safe Mode
|
171
179
|
#
|
172
180
|
# Returns nothing.
|
173
181
|
def dump(path, value)
|
174
|
-
return unless
|
182
|
+
return unless disk_cache_enabled?
|
175
183
|
|
176
|
-
|
177
|
-
FileUtils.mkdir_p(dir)
|
184
|
+
FileUtils.mkdir_p(File.dirname(path))
|
178
185
|
File.open(path, "wb") do |cached_file|
|
179
186
|
Marshal.dump(value, cached_file)
|
180
187
|
end
|
data/lib/jekyll/cleaner.rb
CHANGED
@@ -66,7 +66,7 @@ module Jekyll
|
|
66
66
|
#
|
67
67
|
# Returns a Set with the directory paths
|
68
68
|
def new_dirs
|
69
|
-
@new_dirs ||= new_files.
|
69
|
+
@new_dirs ||= new_files.flat_map { |file| parent_dirs(file) }.to_set
|
70
70
|
end
|
71
71
|
|
72
72
|
# Private: The list of parent directories of a given file
|
@@ -77,7 +77,7 @@ module Jekyll
|
|
77
77
|
if parent_dir == site.dest
|
78
78
|
[]
|
79
79
|
else
|
80
|
-
|
80
|
+
parent_dirs(parent_dir).unshift(parent_dir)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -94,7 +94,7 @@ module Jekyll
|
|
94
94
|
#
|
95
95
|
# Returns a Set with the directory paths
|
96
96
|
def keep_dirs
|
97
|
-
site.keep_files.
|
97
|
+
site.keep_files.flat_map { |file| parent_dirs(site.in_dest_dir(file)) }.to_set
|
98
98
|
end
|
99
99
|
|
100
100
|
# Private: Creates a regular expression from the config's keep_files array
|
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.
|
@@ -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
@@ -79,15 +79,11 @@ module Jekyll
|
|
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
|
@@ -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
|
|
@@ -284,15 +265,6 @@ module Jekyll
|
|
284
265
|
config
|
285
266
|
end
|
286
267
|
|
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
268
|
private
|
297
269
|
|
298
270
|
def style_to_permalink(permalink_style)
|
@@ -305,82 +277,20 @@ module Jekyll
|
|
305
277
|
"/:categories/:year/:month/:day/:title:output_ext"
|
306
278
|
when :ordinal
|
307
279
|
"/:categories/:year/:y_day/:title:output_ext"
|
280
|
+
when :weekdate
|
281
|
+
"/:categories/:year/W:week/:short_day/:title:output_ext"
|
308
282
|
else
|
309
283
|
permalink_style.to_s
|
310
284
|
end
|
311
285
|
end
|
312
286
|
|
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
287
|
def check_include_exclude(config)
|
357
288
|
%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
|
289
|
+
next unless config.key?(option)
|
290
|
+
next if config[option].is_a?(Array)
|
368
291
|
|
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."
|
292
|
+
raise Jekyll::Errors::InvalidConfigurationError,
|
293
|
+
"'#{option}' should be set as an array, but was: #{config[option].inspect}."
|
384
294
|
end
|
385
295
|
end
|
386
296
|
|
@@ -389,17 +299,16 @@ module Jekyll
|
|
389
299
|
# config - the config hash
|
390
300
|
#
|
391
301
|
# Raises a Jekyll::Errors::InvalidConfigurationError if the config `plugins`
|
392
|
-
# is
|
302
|
+
# is not an Array.
|
393
303
|
def check_plugins(config)
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
end
|
304
|
+
return unless config.key?("plugins")
|
305
|
+
return if config["plugins"].is_a?(Array)
|
306
|
+
|
307
|
+
Jekyll.logger.error "'plugins' should be set as an array of gem-names, but was: " \
|
308
|
+
"#{config["plugins"].inspect}. Use 'plugins_dir' instead to set the directory " \
|
309
|
+
"for your non-gemified Ruby plugins."
|
310
|
+
raise Jekyll::Errors::InvalidConfigurationError,
|
311
|
+
"'plugins' should be set as an array, but was: #{config["plugins"].inspect}."
|
403
312
|
end
|
404
313
|
end
|
405
314
|
end
|