jekyll 3.9.1 → 4.0.0.pre.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +27 -50
- data/LICENSE +1 -1
- data/README.markdown +46 -17
- data/lib/blank_template/_config.yml +3 -0
- data/lib/blank_template/_layouts/default.html +12 -0
- data/lib/blank_template/_sass/main.scss +9 -0
- data/lib/blank_template/assets/css/main.scss +4 -0
- data/lib/blank_template/index.md +8 -0
- data/lib/jekyll.rb +5 -0
- data/lib/jekyll/cache.rb +183 -0
- data/lib/jekyll/cleaner.rb +2 -1
- data/lib/jekyll/collection.rb +78 -8
- data/lib/jekyll/command.rb +31 -6
- data/lib/jekyll/commands/build.rb +11 -20
- data/lib/jekyll/commands/clean.rb +2 -0
- data/lib/jekyll/commands/doctor.rb +15 -8
- data/lib/jekyll/commands/help.rb +1 -1
- data/lib/jekyll/commands/new.rb +37 -39
- data/lib/jekyll/commands/new_theme.rb +30 -28
- data/lib/jekyll/commands/serve.rb +46 -80
- data/lib/jekyll/commands/serve/live_reload_reactor.rb +6 -10
- data/lib/jekyll/commands/serve/servlet.rb +9 -11
- data/lib/jekyll/configuration.rb +26 -26
- data/lib/jekyll/converters/identity.rb +18 -0
- data/lib/jekyll/converters/markdown.rb +49 -40
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +1 -10
- data/lib/jekyll/converters/smartypants.rb +34 -14
- data/lib/jekyll/convertible.rb +11 -13
- data/lib/jekyll/deprecator.rb +1 -3
- data/lib/jekyll/document.rb +44 -41
- data/lib/jekyll/drops/collection_drop.rb +2 -3
- data/lib/jekyll/drops/document_drop.rb +2 -1
- data/lib/jekyll/drops/drop.rb +3 -6
- data/lib/jekyll/drops/excerpt_drop.rb +4 -0
- data/lib/jekyll/drops/site_drop.rb +4 -13
- data/lib/jekyll/drops/unified_payload_drop.rb +1 -0
- data/lib/jekyll/drops/url_drop.rb +1 -0
- data/lib/jekyll/entry_filter.rb +2 -1
- data/lib/jekyll/excerpt.rb +45 -34
- data/lib/jekyll/external.rb +10 -5
- data/lib/jekyll/filters.rb +72 -31
- data/lib/jekyll/filters/date_filters.rb +6 -3
- data/lib/jekyll/filters/grouping_filters.rb +1 -2
- data/lib/jekyll/filters/url_filters.rb +6 -1
- data/lib/jekyll/frontmatter_defaults.rb +35 -19
- data/lib/jekyll/hooks.rb +2 -3
- data/lib/jekyll/liquid_extensions.rb +0 -2
- data/lib/jekyll/liquid_renderer.rb +13 -1
- data/lib/jekyll/liquid_renderer/file.rb +14 -3
- data/lib/jekyll/liquid_renderer/table.rb +67 -65
- data/lib/jekyll/log_adapter.rb +5 -1
- data/lib/jekyll/page.rb +10 -11
- data/lib/jekyll/page_without_a_file.rb +0 -4
- data/lib/jekyll/plugin.rb +5 -11
- data/lib/jekyll/plugin_manager.rb +2 -0
- data/lib/jekyll/reader.rb +38 -8
- data/lib/jekyll/readers/data_reader.rb +7 -9
- data/lib/jekyll/readers/layout_reader.rb +2 -12
- data/lib/jekyll/readers/post_reader.rb +29 -17
- data/lib/jekyll/readers/static_file_reader.rb +1 -1
- data/lib/jekyll/readers/theme_assets_reader.rb +7 -5
- data/lib/jekyll/regenerator.rb +4 -12
- data/lib/jekyll/renderer.rb +14 -25
- data/lib/jekyll/site.rb +78 -34
- data/lib/jekyll/static_file.rb +47 -11
- data/lib/jekyll/stevenson.rb +2 -3
- data/lib/jekyll/tags/highlight.rb +22 -52
- data/lib/jekyll/tags/include.rb +22 -38
- data/lib/jekyll/tags/link.rb +11 -7
- data/lib/jekyll/tags/post_url.rb +17 -16
- data/lib/jekyll/theme.rb +12 -23
- data/lib/jekyll/theme_builder.rb +91 -89
- data/lib/jekyll/url.rb +3 -2
- data/lib/jekyll/utils.rb +5 -4
- data/lib/jekyll/utils/ansi.rb +1 -1
- data/lib/jekyll/utils/exec.rb +0 -1
- data/lib/jekyll/utils/internet.rb +2 -4
- data/lib/jekyll/utils/platforms.rb +8 -8
- data/lib/jekyll/utils/thread_event.rb +1 -5
- data/lib/jekyll/utils/win_tz.rb +1 -1
- data/lib/jekyll/version.rb +1 -1
- data/lib/site_template/.gitignore +2 -0
- data/lib/site_template/404.html +1 -0
- data/lib/site_template/_config.yml +17 -5
- data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +5 -1
- data/lib/site_template/{about.md → about.markdown} +0 -0
- data/lib/site_template/{index.md → index.markdown} +0 -0
- data/lib/theme_template/gitignore.erb +1 -0
- data/rubocop/jekyll/assert_equal_literal_actual.rb +149 -0
- metadata +85 -51
- data/lib/jekyll/converters/markdown/rdiscount_parser.rb +0 -37
- data/lib/jekyll/converters/markdown/redcarpet_parser.rb +0 -112
- data/lib/jekyll/utils/rouge.rb +0 -22
data/lib/jekyll/log_adapter.rb
CHANGED
@@ -29,7 +29,9 @@ module Jekyll
|
|
29
29
|
#
|
30
30
|
# Returns nothing
|
31
31
|
def log_level=(level)
|
32
|
-
writer.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(
|
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?(
|
65
|
+
if url.end_with?("/")
|
68
66
|
url
|
69
67
|
else
|
70
68
|
url_dir = File.dirname(url)
|
71
|
-
url_dir.end_with?(
|
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
|
-
|
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
|
-
"
|
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.
|
data/lib/jekyll/plugin.rb
CHANGED
@@ -13,7 +13,7 @@ module Jekyll
|
|
13
13
|
#
|
14
14
|
|
15
15
|
def self.inherited(const)
|
16
|
-
|
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[
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
59
|
-
|
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
|
-
|
64
|
-
|
65
|
-
|
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 ||= (
|
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
|
-
|
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)
|
38
|
-
.
|
39
|
-
|
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
|
-
|
67
|
-
|
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
|
@@ -8,10 +8,11 @@ module Jekyll
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def read
|
11
|
-
return unless site.theme
|
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
|
-
|
33
|
+
Jekyll::Page.new(site, base, dir, name)
|
32
34
|
else
|
33
35
|
append_unless_exists site.static_files,
|
34
|
-
|
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
|
-
|
42
|
-
|
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
|
|
data/lib/jekyll/regenerator.rb
CHANGED
@@ -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))
|