jekyll 3.8.3 → 3.9.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,16 +54,14 @@ module Jekyll
54
54
  def read_data_file(path)
55
55
  case File.extname(path).downcase
56
56
  when ".csv"
57
- CSV.read(path, {
57
+ CSV.read(path,
58
58
  :headers => true,
59
- :encoding => site.config["encoding"],
60
- }).map(&:to_hash)
59
+ :encoding => site.config["encoding"]).map(&:to_hash)
61
60
  when ".tsv"
62
- CSV.read(path, {
61
+ CSV.read(path,
63
62
  :col_sep => "\t",
64
63
  :headers => true,
65
- :encoding => site.config["encoding"],
66
- }).map(&:to_hash)
64
+ :encoding => site.config["encoding"]).map(&:to_hash)
67
65
  else
68
66
  SafeYAML.load_file(path)
69
67
  end
data/lib/jekyll/site.rb CHANGED
@@ -314,15 +314,15 @@ module Jekyll
314
314
  #
315
315
  # Returns an Array of Documents which should be written
316
316
  def docs_to_write
317
- @docs_to_write ||= documents.select(&:write?)
317
+ documents.select(&:write?)
318
318
  end
319
319
 
320
320
  # Get all the documents
321
321
  #
322
322
  # Returns an Array of all Documents
323
323
  def documents
324
- collections.reduce(Set.new) do |docs, (_, collection)|
325
- docs + collection.docs + collection.files
324
+ collections.each_with_object(Set.new) do |(_, collection), set|
325
+ set.merge(collection.docs).merge(collection.files)
326
326
  end.to_a
327
327
  end
328
328
 
@@ -22,7 +22,7 @@ module Jekyll
22
22
  !mx
23
23
 
24
24
  FULL_VALID_SYNTAX = %r!\A\s*(?:#{VALID_SYNTAX}(?=\s|\z)\s*)*\z!
25
- VALID_FILENAME_CHARS = %r!^[\w/\.-]+$!
25
+ VALID_FILENAME_CHARS = %r!^[\w/.\-()+~\#@]+$!
26
26
  INVALID_SEQUENCES = %r![./]{2,}!
27
27
 
28
28
  def initialize(tag_name, markup, tokens)
@@ -147,12 +147,17 @@ MSG
147
147
  end
148
148
 
149
149
  def add_include_to_dependency(site, path, context)
150
- if context.registers[:page] && context.registers[:page].key?("path")
151
- site.regenerator.add_dependency(
152
- site.in_source_dir(context.registers[:page]["path"]),
153
- path
154
- )
155
- end
150
+ page = context.registers[:page]
151
+ return unless page
152
+ return unless page.key?("path")
153
+
154
+ absolute_path = \
155
+ if page["collection"]
156
+ site.in_source_dir(site.config["collections_dir"], page["path"])
157
+ else
158
+ site.in_source_dir(page["path"])
159
+ end
160
+ site.regenerator.add_dependency(absolute_path, path)
156
161
  end
157
162
 
158
163
  def load_cached_partial(path, context)
@@ -191,7 +196,7 @@ MSG
191
196
 
192
197
  # This method allows to modify the file content by inheriting from the class.
193
198
  def read_file(file, context)
194
- File.read(file, file_read_opts(context))
199
+ File.read(file, **file_read_opts(context))
195
200
  end
196
201
 
197
202
  private
@@ -224,6 +229,7 @@ MSG
224
229
  else
225
230
  File.join(site.config["collections_dir"], page_payload["path"])
226
231
  end
232
+ resource_path.sub!(%r!/#excerpt\z!, "")
227
233
  site.in_source_dir File.dirname(resource_path)
228
234
  end
229
235
  end
data/lib/jekyll/theme.rb CHANGED
@@ -56,12 +56,28 @@ module Jekyll
56
56
  end
57
57
 
58
58
  def realpath_for(folder)
59
- File.realpath(Jekyll.sanitized_path(root, folder.to_s))
60
- rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP
61
- Jekyll.logger.warn "Invalid theme folder:", folder
59
+ # This resolves all symlinks for the theme subfolder and then ensures
60
+ # that the directory remains inside the theme root. This prevents the
61
+ # use of symlinks for theme subfolders to escape the theme root.
62
+ # However, symlinks are allowed to point to other directories within the theme.
63
+ Jekyll.sanitized_path(root, File.realpath(Jekyll.sanitized_path(root, folder.to_s)))
64
+ rescue Errno::ENOENT, Errno::EACCES, Errno::ELOOP => e
65
+ log_realpath_exception(e, folder)
62
66
  nil
63
67
  end
64
68
 
69
+ def log_realpath_exception(err, folder)
70
+ return if err.is_a?(Errno::ENOENT)
71
+
72
+ case err
73
+ when Errno::EACCES
74
+ Jekyll.logger.error "Theme error:", "Directory '#{folder}' is not accessible."
75
+ when Errno::ELOOP
76
+ Jekyll.logger.error "Theme error:",
77
+ "Directory '#{folder}' includes a symbolic link loop."
78
+ end
79
+ end
80
+
65
81
  def gemspec
66
82
  @gemspec ||= Gem::Specification.find_by_name(name)
67
83
  rescue Gem::LoadError
@@ -70,9 +70,9 @@ module Jekyll
70
70
  private
71
71
  def proc_version
72
72
  @proc_version ||= begin
73
- Pathutil.new(
73
+ File.read(
74
74
  "/proc/version"
75
- ).read
75
+ ).downcase
76
76
  rescue Errno::ENOENT
77
77
  nil
78
78
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Jekyll
4
- VERSION = "3.8.3".freeze
4
+ VERSION = "3.9.2".freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.3
4
+ version: 3.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-05 00:00:00.000000000 Z
11
+ date: 2022-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '2.0'
97
- - !ruby/object:Gem::Dependency
98
- name: kramdown
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.14'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.14'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: liquid
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +170,26 @@ dependencies:
184
170
  - - "~>"
185
171
  - !ruby/object:Gem::Version
186
172
  version: '1.0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: kramdown
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '1.17'
180
+ - - "<"
181
+ - !ruby/object:Gem::Version
182
+ version: '3'
183
+ type: :runtime
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '1.17'
190
+ - - "<"
191
+ - !ruby/object:Gem::Version
192
+ version: '3'
187
193
  description: Jekyll is a simple, blog aware, static site generator.
188
194
  email: tom@mojombo.com
189
195
  executables:
@@ -210,6 +216,7 @@ files:
210
216
  - lib/jekyll/commands/serve.rb
211
217
  - lib/jekyll/commands/serve/live_reload_reactor.rb
212
218
  - lib/jekyll/commands/serve/livereload_assets/livereload.js
219
+ - lib/jekyll/commands/serve/mime_types_charset.json
213
220
  - lib/jekyll/commands/serve/servlet.rb
214
221
  - lib/jekyll/commands/serve/websockets.rb
215
222
  - lib/jekyll/configuration.rb
@@ -311,7 +318,7 @@ homepage: https://github.com/jekyll/jekyll
311
318
  licenses:
312
319
  - MIT
313
320
  metadata: {}
314
- post_install_message:
321
+ post_install_message:
315
322
  rdoc_options:
316
323
  - "--charset=UTF-8"
317
324
  require_paths:
@@ -327,9 +334,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
334
  - !ruby/object:Gem::Version
328
335
  version: '0'
329
336
  requirements: []
330
- rubyforge_project:
331
- rubygems_version: 2.6.14
332
- signing_key:
337
+ rubygems_version: 3.1.6
338
+ signing_key:
333
339
  specification_version: 2
334
340
  summary: A simple, blog aware, static site generator.
335
341
  test_files: []