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.
- 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))
|