jekyll 3.9.1 → 4.0.0.pre.alpha1

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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +27 -50
  3. data/LICENSE +1 -1
  4. data/README.markdown +46 -17
  5. data/lib/blank_template/_config.yml +3 -0
  6. data/lib/blank_template/_layouts/default.html +12 -0
  7. data/lib/blank_template/_sass/main.scss +9 -0
  8. data/lib/blank_template/assets/css/main.scss +4 -0
  9. data/lib/blank_template/index.md +8 -0
  10. data/lib/jekyll.rb +5 -0
  11. data/lib/jekyll/cache.rb +183 -0
  12. data/lib/jekyll/cleaner.rb +2 -1
  13. data/lib/jekyll/collection.rb +78 -8
  14. data/lib/jekyll/command.rb +31 -6
  15. data/lib/jekyll/commands/build.rb +11 -20
  16. data/lib/jekyll/commands/clean.rb +2 -0
  17. data/lib/jekyll/commands/doctor.rb +15 -8
  18. data/lib/jekyll/commands/help.rb +1 -1
  19. data/lib/jekyll/commands/new.rb +37 -39
  20. data/lib/jekyll/commands/new_theme.rb +30 -28
  21. data/lib/jekyll/commands/serve.rb +46 -80
  22. data/lib/jekyll/commands/serve/live_reload_reactor.rb +6 -10
  23. data/lib/jekyll/commands/serve/servlet.rb +9 -11
  24. data/lib/jekyll/configuration.rb +26 -26
  25. data/lib/jekyll/converters/identity.rb +18 -0
  26. data/lib/jekyll/converters/markdown.rb +49 -40
  27. data/lib/jekyll/converters/markdown/kramdown_parser.rb +1 -10
  28. data/lib/jekyll/converters/smartypants.rb +34 -14
  29. data/lib/jekyll/convertible.rb +11 -13
  30. data/lib/jekyll/deprecator.rb +1 -3
  31. data/lib/jekyll/document.rb +44 -41
  32. data/lib/jekyll/drops/collection_drop.rb +2 -3
  33. data/lib/jekyll/drops/document_drop.rb +2 -1
  34. data/lib/jekyll/drops/drop.rb +3 -6
  35. data/lib/jekyll/drops/excerpt_drop.rb +4 -0
  36. data/lib/jekyll/drops/site_drop.rb +4 -13
  37. data/lib/jekyll/drops/unified_payload_drop.rb +1 -0
  38. data/lib/jekyll/drops/url_drop.rb +1 -0
  39. data/lib/jekyll/entry_filter.rb +2 -1
  40. data/lib/jekyll/excerpt.rb +45 -34
  41. data/lib/jekyll/external.rb +10 -5
  42. data/lib/jekyll/filters.rb +72 -31
  43. data/lib/jekyll/filters/date_filters.rb +6 -3
  44. data/lib/jekyll/filters/grouping_filters.rb +1 -2
  45. data/lib/jekyll/filters/url_filters.rb +6 -1
  46. data/lib/jekyll/frontmatter_defaults.rb +35 -19
  47. data/lib/jekyll/hooks.rb +2 -3
  48. data/lib/jekyll/liquid_extensions.rb +0 -2
  49. data/lib/jekyll/liquid_renderer.rb +13 -1
  50. data/lib/jekyll/liquid_renderer/file.rb +14 -3
  51. data/lib/jekyll/liquid_renderer/table.rb +67 -65
  52. data/lib/jekyll/log_adapter.rb +5 -1
  53. data/lib/jekyll/page.rb +10 -11
  54. data/lib/jekyll/page_without_a_file.rb +0 -4
  55. data/lib/jekyll/plugin.rb +5 -11
  56. data/lib/jekyll/plugin_manager.rb +2 -0
  57. data/lib/jekyll/reader.rb +38 -8
  58. data/lib/jekyll/readers/data_reader.rb +7 -9
  59. data/lib/jekyll/readers/layout_reader.rb +2 -12
  60. data/lib/jekyll/readers/post_reader.rb +29 -17
  61. data/lib/jekyll/readers/static_file_reader.rb +1 -1
  62. data/lib/jekyll/readers/theme_assets_reader.rb +7 -5
  63. data/lib/jekyll/regenerator.rb +4 -12
  64. data/lib/jekyll/renderer.rb +14 -25
  65. data/lib/jekyll/site.rb +78 -34
  66. data/lib/jekyll/static_file.rb +47 -11
  67. data/lib/jekyll/stevenson.rb +2 -3
  68. data/lib/jekyll/tags/highlight.rb +22 -52
  69. data/lib/jekyll/tags/include.rb +22 -38
  70. data/lib/jekyll/tags/link.rb +11 -7
  71. data/lib/jekyll/tags/post_url.rb +17 -16
  72. data/lib/jekyll/theme.rb +12 -23
  73. data/lib/jekyll/theme_builder.rb +91 -89
  74. data/lib/jekyll/url.rb +3 -2
  75. data/lib/jekyll/utils.rb +5 -4
  76. data/lib/jekyll/utils/ansi.rb +1 -1
  77. data/lib/jekyll/utils/exec.rb +0 -1
  78. data/lib/jekyll/utils/internet.rb +2 -4
  79. data/lib/jekyll/utils/platforms.rb +8 -8
  80. data/lib/jekyll/utils/thread_event.rb +1 -5
  81. data/lib/jekyll/utils/win_tz.rb +1 -1
  82. data/lib/jekyll/version.rb +1 -1
  83. data/lib/site_template/.gitignore +2 -0
  84. data/lib/site_template/404.html +1 -0
  85. data/lib/site_template/_config.yml +17 -5
  86. data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +5 -1
  87. data/lib/site_template/{about.md → about.markdown} +0 -0
  88. data/lib/site_template/{index.md → index.markdown} +0 -0
  89. data/lib/theme_template/gitignore.erb +1 -0
  90. data/rubocop/jekyll/assert_equal_literal_actual.rb +149 -0
  91. metadata +85 -51
  92. data/lib/jekyll/converters/markdown/rdiscount_parser.rb +0 -37
  93. data/lib/jekyll/converters/markdown/redcarpet_parser.rb +0 -112
  94. data/lib/jekyll/utils/rouge.rb +0 -22
@@ -29,7 +29,9 @@ module Jekyll
29
29
  #
30
30
  # Returns nothing
31
31
  def log_level=(level)
32
- writer.level = LOG_LEVELS.fetch(level)
32
+ writer.level = level if level.is_a?(Integer) && level.between?(0, 3)
33
+ writer.level = LOG_LEVELS[level] ||
34
+ raise(ArgumentError, "unknown log level")
33
35
  @level = level
34
36
  end
35
37
 
@@ -41,6 +43,7 @@ module Jekyll
41
43
  self.log_level = :debug
42
44
  end
43
45
  debug "Logging at level:", LOG_LEVELS.key(writer.level).to_s
46
+ debug "Jekyll Version:", Jekyll::VERSION
44
47
  end
45
48
 
46
49
  # Public: Print a debug message
@@ -141,6 +144,7 @@ module Jekyll
141
144
  # the appropriate writer method, e.g. writer.info.
142
145
  def write(level_of_message, topic, message = nil, &block)
143
146
  return false unless write_message?(level_of_message)
147
+
144
148
  writer.public_send(level_of_message, message(topic, message, &block))
145
149
  end
146
150
  end
data/lib/jekyll/page.rb CHANGED
@@ -11,8 +11,6 @@ module Jekyll
11
11
 
12
12
  alias_method :extname, :ext
13
13
 
14
- FORWARD_SLASH = "/".freeze
15
-
16
14
  # Attributes for Liquid templates
17
15
  ATTRIBUTES_FOR_LIQUID = %w(
18
16
  content
@@ -52,7 +50,7 @@ module Jekyll
52
50
  read_yaml(File.join(base, dir), name)
53
51
 
54
52
  data.default_proc = proc do |_, key|
55
- site.frontmatter_defaults.find(File.join(dir, name), type, key)
53
+ site.frontmatter_defaults.find(relative_path, type, key)
56
54
  end
57
55
 
58
56
  Jekyll::Hooks.trigger :pages, :post_init, self
@@ -64,11 +62,11 @@ module Jekyll
64
62
  #
65
63
  # Returns the String destination directory.
66
64
  def dir
67
- if url.end_with?(FORWARD_SLASH)
65
+ if url.end_with?("/")
68
66
  url
69
67
  else
70
68
  url_dir = File.dirname(url)
71
- url_dir.end_with?(FORWARD_SLASH) ? url_dir : "#{url_dir}/"
69
+ url_dir.end_with?("/") ? url_dir : "#{url_dir}/"
72
70
  end
73
71
  end
74
72
 
@@ -97,11 +95,11 @@ module Jekyll
97
95
  #
98
96
  # Returns the String url.
99
97
  def url
100
- @url ||= URL.new({
98
+ @url ||= URL.new(
101
99
  :template => template,
102
100
  :placeholders => url_placeholders,
103
- :permalink => permalink,
104
- }).to_s
101
+ :permalink => permalink
102
+ ).to_s
105
103
  end
106
104
 
107
105
  # Returns a hash of URL placeholder names (as symbols) mapping to the
@@ -118,10 +116,11 @@ module Jekyll
118
116
  #
119
117
  # name - The String filename of the page file.
120
118
  #
119
+ # NOTE: `String#gsub` removes all trailing periods (in comparison to `String#chomp`)
121
120
  # Returns nothing.
122
121
  def process(name)
123
122
  self.ext = File.extname(name)
124
- self.basename = name[0..-ext.length - 1]
123
+ self.basename = name[0..-ext.length - 1].gsub(%r!\.*\z!, "")
125
124
  end
126
125
 
127
126
  # Add any necessary layouts to this post
@@ -146,7 +145,7 @@ module Jekyll
146
145
 
147
146
  # The path to the page source file, relative to the site source
148
147
  def relative_path
149
- File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r!\A\/!, "")
148
+ @relative_path ||= File.join(*[@dir, @name].map(&:to_s).reject(&:empty?)).sub(%r!\A\/!, "")
150
149
  end
151
150
 
152
151
  # Obtain destination path.
@@ -163,7 +162,7 @@ module Jekyll
163
162
 
164
163
  # Returns the object as a debug String.
165
164
  def inspect
166
- "#<Jekyll::Page @name=#{name.inspect}>"
165
+ "#<#{self.class} @relative_path=#{relative_path.inspect}>"
167
166
  end
168
167
 
169
168
  # Returns the Boolean of whether this Page is HTML or not.
@@ -10,9 +10,5 @@ module Jekyll
10
10
  def read_yaml(*)
11
11
  @data ||= {}
12
12
  end
13
-
14
- def inspect
15
- "#<Jekyll:PageWithoutAFile @name=#{name.inspect}>"
16
- end
17
13
  end
18
14
  end
data/lib/jekyll/plugin.rb CHANGED
@@ -13,7 +13,7 @@ module Jekyll
13
13
  #
14
14
 
15
15
  def self.inherited(const)
16
- return catch_inheritance(const) do |const_|
16
+ catch_inheritance(const) do |const_|
17
17
  catch_inheritance(const_)
18
18
  end
19
19
  end
@@ -23,9 +23,7 @@ module Jekyll
23
23
  def self.catch_inheritance(const)
24
24
  const.define_singleton_method :inherited do |const_|
25
25
  (@children ||= Set.new).add const_
26
- if block_given?
27
- yield const_
28
- end
26
+ yield const_ if block_given?
29
27
  end
30
28
  end
31
29
 
@@ -48,9 +46,7 @@ module Jekyll
48
46
  # Returns the Symbol priority.
49
47
  def self.priority(priority = nil)
50
48
  @priority ||= nil
51
- if priority && PRIORITIES.key?(priority)
52
- @priority = priority
53
- end
49
+ @priority = priority if priority && PRIORITIES.key?(priority)
54
50
  @priority || :normal
55
51
  end
56
52
 
@@ -62,9 +58,7 @@ module Jekyll
62
58
  #
63
59
  # Returns the safety Boolean.
64
60
  def self.safe(safe = nil)
65
- unless defined?(@safe) && safe.nil?
66
- @safe = safe
67
- end
61
+ @safe = safe unless defined?(@safe) && safe.nil?
68
62
  @safe || false
69
63
  end
70
64
 
@@ -74,7 +68,7 @@ module Jekyll
74
68
  #
75
69
  # Returns -1, 0, 1.
76
70
  def self.<=>(other)
77
- PRIORITIES[other.priority] <=> PRIORITIES[self.priority]
71
+ PRIORITIES[other.priority] <=> PRIORITIES[priority]
78
72
  end
79
73
 
80
74
  # Spaceship is priority [higher -> lower]
@@ -37,8 +37,10 @@ module Jekyll
37
37
  # Returns false only if no dependencies have been specified, otherwise nothing.
38
38
  def require_theme_deps
39
39
  return false unless site.theme.runtime_dependencies
40
+
40
41
  site.theme.runtime_dependencies.each do |dep|
41
42
  next if dep.name == "jekyll"
43
+
42
44
  External.require_with_graceful_fail(dep.name) if plugin_allowed?(dep.name)
43
45
  end
44
46
  end
data/lib/jekyll/reader.rb CHANGED
@@ -14,6 +14,7 @@ module Jekyll
14
14
  def read
15
15
  @site.layouts = LayoutReader.new(site).read
16
16
  read_directories
17
+ read_included_excludes
17
18
  sort_files!
18
19
  @site.data = DataReader.new(site).read(site.config["data_dir"])
19
20
  CollectionReader.new(site).read
@@ -39,13 +40,21 @@ module Jekyll
39
40
 
40
41
  return unless File.directory?(base)
41
42
 
43
+ dot_dirs = []
44
+ dot_pages = []
45
+ dot_static_files = []
46
+
42
47
  dot = Dir.chdir(base) { filter_entries(Dir.entries("."), base) }
43
- dot_dirs = dot.select { |file| File.directory?(@site.in_source_dir(base, file)) }
44
- dot_files = (dot - dot_dirs)
45
- dot_pages = dot_files.select do |file|
46
- Utils.has_yaml_header?(@site.in_source_dir(base, file))
48
+ dot.each do |entry|
49
+ file_path = @site.in_source_dir(base, entry)
50
+ if File.directory?(file_path)
51
+ dot_dirs << entry
52
+ elsif Utils.has_yaml_header?(file_path)
53
+ dot_pages << entry
54
+ else
55
+ dot_static_files << entry
56
+ end
47
57
  end
48
- dot_static_files = dot_files - dot_pages
49
58
 
50
59
  retrieve_posts(dir)
51
60
  retrieve_dirs(base, dir, dot_dirs)
@@ -61,6 +70,7 @@ module Jekyll
61
70
  # Returns nothing.
62
71
  def retrieve_posts(dir)
63
72
  return if outside_configured_directory?(dir)
73
+
64
74
  site.posts.docs.concat(post_reader.read_posts(dir))
65
75
  site.posts.docs.concat(post_reader.read_drafts(dir)) if site.show_drafts
66
76
  end
@@ -76,9 +86,7 @@ module Jekyll
76
86
  dot_dirs.each do |file|
77
87
  dir_path = site.in_source_dir(dir, file)
78
88
  rel_path = File.join(dir, file)
79
- unless @site.dest.chomp("/") == dir_path
80
- @site.reader.read_directories(rel_path)
81
- end
89
+ @site.reader.read_directories(rel_path) unless @site.dest.chomp("/") == dir_path
82
90
  end
83
91
  end
84
92
 
@@ -126,6 +134,7 @@ module Jekyll
126
134
  def get_entries(dir, subfolder)
127
135
  base = site.in_source_dir(dir, subfolder)
128
136
  return [] unless File.exist?(base)
137
+
129
138
  entries = Dir.chdir(base) { filter_entries(Dir["**/*"], base) }
130
139
  entries.delete_if { |e| File.directory?(site.in_source_dir(base, e)) }
131
140
  end
@@ -150,5 +159,26 @@ module Jekyll
150
159
  def post_reader
151
160
  @post_reader ||= PostReader.new(site)
152
161
  end
162
+
163
+ def read_included_excludes
164
+ site.include.each do |entry|
165
+ next if entry == ".htaccess"
166
+
167
+ entry_path = site.in_source_dir(entry)
168
+ next if File.directory?(entry_path)
169
+
170
+ read_included_file(entry_path) if File.file?(entry_path)
171
+ end
172
+ end
173
+
174
+ def read_included_file(entry_path)
175
+ dir = File.dirname(entry_path).sub(site.source, "")
176
+ file = Array(File.basename(entry_path))
177
+ if Utils.has_yaml_header?(entry_path)
178
+ site.pages.concat(PageReader.new(site, dir).read(file))
179
+ else
180
+ site.static_files.concat(StaticFileReader.new(site, dir).read(file))
181
+ end
182
+ end
153
183
  end
154
184
  end
@@ -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, {
58
- :headers => true,
59
- :encoding => site.config["encoding"],
60
- }).map(&:to_hash)
57
+ CSV.read(path,
58
+ :headers => true,
59
+ :encoding => site.config["encoding"]).map(&:to_hash)
61
60
  when ".tsv"
62
- CSV.read(path, {
63
- :col_sep => "\t",
64
- :headers => true,
65
- :encoding => site.config["encoding"],
66
- }).map(&:to_hash)
61
+ CSV.read(path,
62
+ :col_sep => "\t",
63
+ :headers => true,
64
+ :encoding => site.config["encoding"]).map(&:to_hash)
67
65
  else
68
66
  SafeYAML.load_file(path)
69
67
  end
@@ -23,7 +23,7 @@ module Jekyll
23
23
  end
24
24
 
25
25
  def layout_directory
26
- @layout_directory ||= (layout_directory_in_cwd || layout_directory_inside_source)
26
+ @layout_directory ||= site.in_source_dir(site.config["layouts_dir"])
27
27
  end
28
28
 
29
29
  def theme_layout_directory
@@ -54,18 +54,8 @@ module Jekyll
54
54
 
55
55
  def within(directory)
56
56
  return unless File.exist?(directory)
57
- Dir.chdir(directory) { yield }
58
- end
59
-
60
- def layout_directory_inside_source
61
- site.in_source_dir(site.config["layouts_dir"])
62
- end
63
57
 
64
- def layout_directory_in_cwd
65
- dir = Jekyll.sanitized_path(Dir.pwd, site.config["layouts_dir"])
66
- if File.directory?(dir) && !site.safe
67
- dir
68
- end
58
+ Dir.chdir(directory) { yield }
69
59
  end
70
60
  end
71
61
  end
@@ -34,19 +34,9 @@ module Jekyll
34
34
  #
35
35
  # Returns nothing.
36
36
  def read_publishable(dir, magic_dir, matcher)
37
- read_content(dir, magic_dir, matcher).tap { |docs| docs.each(&:read) }
38
- .select do |doc|
39
- if doc.content.valid_encoding?
40
- site.publisher.publish?(doc).tap do |will_publish|
41
- if !will_publish && site.publisher.hidden_in_the_future?(doc)
42
- Jekyll.logger.debug "Skipping:", "#{doc.relative_path} has a future date"
43
- end
44
- end
45
- else
46
- Jekyll.logger.debug "Skipping:", "#{doc.relative_path} is not valid UTF-8"
47
- false
48
- end
49
- end
37
+ read_content(dir, magic_dir, matcher)
38
+ .tap { |docs| docs.each(&:read) }
39
+ .select { |doc| processable?(doc) }
50
40
  end
51
41
 
52
42
  # Read all the content files from <source>/<dir>/magic_dir
@@ -61,12 +51,34 @@ module Jekyll
61
51
  def read_content(dir, magic_dir, matcher)
62
52
  @site.reader.get_entries(dir, magic_dir).map do |entry|
63
53
  next unless entry =~ matcher
54
+
64
55
  path = @site.in_source_dir(File.join(dir, magic_dir, entry))
65
- Document.new(path, {
66
- :site => @site,
67
- :collection => @site.posts,
68
- })
56
+ Document.new(path,
57
+ :site => @site,
58
+ :collection => @site.posts)
69
59
  end.reject(&:nil?)
70
60
  end
61
+
62
+ private
63
+
64
+ def processable?(doc)
65
+ if doc.content.nil?
66
+ Jekyll.logger.debug "Skipping:", "Content in #{doc.relative_path} is nil"
67
+ false
68
+ elsif !doc.content.valid_encoding?
69
+ Jekyll.logger.debug "Skipping:", "#{doc.relative_path} is not valid UTF-8"
70
+ false
71
+ else
72
+ publishable?(doc)
73
+ end
74
+ end
75
+
76
+ def publishable?(doc)
77
+ site.publisher.publish?(doc).tap do |will_publish|
78
+ if !will_publish && site.publisher.hidden_in_the_future?(doc)
79
+ Jekyll.logger.warn "Skipping:", "#{doc.relative_path} has a future date"
80
+ end
81
+ end
82
+ end
71
83
  end
72
84
  end
@@ -16,7 +16,7 @@ module Jekyll
16
16
  #
17
17
  # Returns an array of static files.
18
18
  def read(files)
19
- files.map do |file|
19
+ files.each do |file|
20
20
  @unfiltered_content << StaticFile.new(@site, @site.source, @dir, file)
21
21
  end
22
22
  @unfiltered_content
@@ -8,10 +8,11 @@ module Jekyll
8
8
  end
9
9
 
10
10
  def read
11
- return unless site.theme && site.theme.assets_path
11
+ return unless site.theme&.assets_path
12
12
 
13
13
  Find.find(site.theme.assets_path) do |path|
14
14
  next if File.directory?(path)
15
+
15
16
  if File.symlink?(path)
16
17
  Jekyll.logger.warn "Theme reader:", "Ignored symlinked asset: #{path}"
17
18
  else
@@ -21,6 +22,7 @@ module Jekyll
21
22
  end
22
23
 
23
24
  private
25
+
24
26
  def read_theme_asset(path)
25
27
  base = site.theme.root
26
28
  dir = File.dirname(path.sub("#{site.theme.root}/", ""))
@@ -28,18 +30,18 @@ module Jekyll
28
30
 
29
31
  if Utils.has_yaml_header?(path)
30
32
  append_unless_exists site.pages,
31
- Jekyll::Page.new(site, base, dir, name)
33
+ Jekyll::Page.new(site, base, dir, name)
32
34
  else
33
35
  append_unless_exists site.static_files,
34
- Jekyll::StaticFile.new(site, base, "/#{dir}", name)
36
+ Jekyll::StaticFile.new(site, base, "/#{dir}", name)
35
37
  end
36
38
  end
37
39
 
38
40
  def append_unless_exists(haystack, new_item)
39
41
  if haystack.any? { |file| file.relative_path == new_item.relative_path }
40
42
  Jekyll.logger.debug "Theme:",
41
- "Ignoring #{new_item.relative_path} in theme due to existing file " \
42
- "with that path in site."
43
+ "Ignoring #{new_item.relative_path} in theme due to existing file " \
44
+ "with that path in site."
43
45
  return
44
46
  end
45
47
 
@@ -21,6 +21,7 @@ module Jekyll
21
21
  # Returns a boolean.
22
22
  def regenerate?(document)
23
23
  return true if disabled
24
+
24
25
  case document
25
26
  when Page
26
27
  regenerate_page?(document)
@@ -28,9 +29,7 @@ module Jekyll
28
29
  regenerate_document?(document)
29
30
  else
30
31
  source_path = document.respond_to?(:path) ? document.path : nil
31
- dest_path = if document.respond_to?(:destination)
32
- document.destination(@site.dest)
33
- end
32
+ dest_path = document.destination(@site.dest) if document.respond_to?(:destination)
34
33
  source_modified_or_dest_missing?(source_path, dest_path)
35
34
  end
36
35
  end
@@ -89,9 +88,7 @@ module Jekyll
89
88
  return true if path.nil?
90
89
 
91
90
  # Check for path in cache
92
- if cache.key? path
93
- return cache[path]
94
- end
91
+ return cache[path] if cache.key? path
95
92
 
96
93
  if metadata[path]
97
94
  # If we have seen this file before,
@@ -165,7 +162,6 @@ module Jekyll
165
162
  end
166
163
  end
167
164
 
168
- private
169
165
  def regenerate_page?(document)
170
166
  document.asset_file? || document.data["regenerate"] ||
171
167
  source_modified_or_dest_missing?(
@@ -173,7 +169,6 @@ module Jekyll
173
169
  )
174
170
  end
175
171
 
176
- private
177
172
  def regenerate_document?(document)
178
173
  !document.write? || document.data["regenerate"] ||
179
174
  source_modified_or_dest_missing?(
@@ -181,14 +176,11 @@ module Jekyll
181
176
  )
182
177
  end
183
178
 
184
- private
185
179
  def existing_file_modified?(path)
186
180
  # If one of this file dependencies have been modified,
187
181
  # set the regeneration bit for both the dependency and the file to true
188
182
  metadata[path]["deps"].each do |dependency|
189
- if modified?(dependency)
190
- return cache[dependency] = cache[path] = true
191
- end
183
+ return cache[dependency] = cache[path] = true if modified?(dependency)
192
184
  end
193
185
 
194
186
  if File.exist?(path) && metadata[path]["mtime"].eql?(File.mtime(path))