jekyll 4.2.1 → 4.2.2

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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +350 -350
  3. data/LICENSE +21 -21
  4. data/README.markdown +86 -86
  5. data/exe/jekyll +57 -57
  6. data/lib/blank_template/_config.yml +3 -3
  7. data/lib/blank_template/_layouts/default.html +12 -12
  8. data/lib/blank_template/_sass/main.scss +9 -9
  9. data/lib/blank_template/assets/css/main.scss +4 -4
  10. data/lib/blank_template/index.md +8 -8
  11. data/lib/jekyll/cache.rb +190 -190
  12. data/lib/jekyll/cleaner.rb +111 -111
  13. data/lib/jekyll/collection.rb +309 -309
  14. data/lib/jekyll/command.rb +105 -105
  15. data/lib/jekyll/commands/build.rb +93 -93
  16. data/lib/jekyll/commands/clean.rb +45 -45
  17. data/lib/jekyll/commands/doctor.rb +177 -177
  18. data/lib/jekyll/commands/help.rb +34 -34
  19. data/lib/jekyll/commands/new.rb +172 -169
  20. data/lib/jekyll/commands/new_theme.rb +40 -40
  21. data/lib/jekyll/commands/serve/live_reload_reactor.rb +122 -122
  22. data/lib/jekyll/commands/serve/livereload_assets/livereload.js +1183 -1183
  23. data/lib/jekyll/commands/serve/servlet.rb +202 -202
  24. data/lib/jekyll/commands/serve/websockets.rb +81 -81
  25. data/lib/jekyll/commands/serve.rb +362 -362
  26. data/lib/jekyll/configuration.rb +313 -313
  27. data/lib/jekyll/converter.rb +54 -54
  28. data/lib/jekyll/converters/identity.rb +41 -41
  29. data/lib/jekyll/converters/markdown/kramdown_parser.rb +199 -199
  30. data/lib/jekyll/converters/markdown.rb +113 -113
  31. data/lib/jekyll/converters/smartypants.rb +70 -70
  32. data/lib/jekyll/convertible.rb +257 -257
  33. data/lib/jekyll/deprecator.rb +50 -50
  34. data/lib/jekyll/document.rb +544 -544
  35. data/lib/jekyll/drops/collection_drop.rb +20 -20
  36. data/lib/jekyll/drops/document_drop.rb +70 -70
  37. data/lib/jekyll/drops/drop.rb +293 -293
  38. data/lib/jekyll/drops/excerpt_drop.rb +19 -19
  39. data/lib/jekyll/drops/jekyll_drop.rb +32 -32
  40. data/lib/jekyll/drops/site_drop.rb +66 -66
  41. data/lib/jekyll/drops/static_file_drop.rb +14 -14
  42. data/lib/jekyll/drops/unified_payload_drop.rb +26 -26
  43. data/lib/jekyll/drops/url_drop.rb +140 -140
  44. data/lib/jekyll/entry_filter.rb +121 -121
  45. data/lib/jekyll/errors.rb +20 -20
  46. data/lib/jekyll/excerpt.rb +201 -201
  47. data/lib/jekyll/external.rb +79 -79
  48. data/lib/jekyll/filters/date_filters.rb +110 -110
  49. data/lib/jekyll/filters/grouping_filters.rb +64 -64
  50. data/lib/jekyll/filters/url_filters.rb +98 -98
  51. data/lib/jekyll/filters.rb +535 -535
  52. data/lib/jekyll/frontmatter_defaults.rb +240 -240
  53. data/lib/jekyll/generator.rb +5 -5
  54. data/lib/jekyll/hooks.rb +107 -107
  55. data/lib/jekyll/inclusion.rb +32 -32
  56. data/lib/jekyll/layout.rb +67 -67
  57. data/lib/jekyll/liquid_extensions.rb +22 -22
  58. data/lib/jekyll/liquid_renderer/file.rb +77 -77
  59. data/lib/jekyll/liquid_renderer/table.rb +55 -55
  60. data/lib/jekyll/liquid_renderer.rb +80 -80
  61. data/lib/jekyll/log_adapter.rb +151 -151
  62. data/lib/jekyll/mime.types +866 -866
  63. data/lib/jekyll/page.rb +217 -217
  64. data/lib/jekyll/page_excerpt.rb +25 -25
  65. data/lib/jekyll/page_without_a_file.rb +14 -14
  66. data/lib/jekyll/path_manager.rb +74 -74
  67. data/lib/jekyll/plugin.rb +92 -92
  68. data/lib/jekyll/plugin_manager.rb +115 -115
  69. data/lib/jekyll/profiler.rb +58 -58
  70. data/lib/jekyll/publisher.rb +23 -23
  71. data/lib/jekyll/reader.rb +192 -192
  72. data/lib/jekyll/readers/collection_reader.rb +23 -23
  73. data/lib/jekyll/readers/data_reader.rb +79 -79
  74. data/lib/jekyll/readers/layout_reader.rb +62 -62
  75. data/lib/jekyll/readers/page_reader.rb +25 -25
  76. data/lib/jekyll/readers/post_reader.rb +85 -85
  77. data/lib/jekyll/readers/static_file_reader.rb +25 -25
  78. data/lib/jekyll/readers/theme_assets_reader.rb +52 -52
  79. data/lib/jekyll/regenerator.rb +195 -195
  80. data/lib/jekyll/related_posts.rb +52 -52
  81. data/lib/jekyll/renderer.rb +265 -265
  82. data/lib/jekyll/site.rb +551 -551
  83. data/lib/jekyll/static_file.rb +208 -208
  84. data/lib/jekyll/stevenson.rb +60 -60
  85. data/lib/jekyll/tags/highlight.rb +110 -110
  86. data/lib/jekyll/tags/include.rb +275 -275
  87. data/lib/jekyll/tags/link.rb +42 -42
  88. data/lib/jekyll/tags/post_url.rb +106 -106
  89. data/lib/jekyll/theme.rb +86 -86
  90. data/lib/jekyll/theme_builder.rb +121 -121
  91. data/lib/jekyll/url.rb +167 -167
  92. data/lib/jekyll/utils/ansi.rb +57 -57
  93. data/lib/jekyll/utils/exec.rb +26 -26
  94. data/lib/jekyll/utils/internet.rb +37 -37
  95. data/lib/jekyll/utils/platforms.rb +67 -67
  96. data/lib/jekyll/utils/thread_event.rb +31 -31
  97. data/lib/jekyll/utils/win_tz.rb +75 -75
  98. data/lib/jekyll/utils.rb +367 -367
  99. data/lib/jekyll/version.rb +5 -5
  100. data/lib/jekyll.rb +195 -195
  101. data/lib/site_template/.gitignore +5 -5
  102. data/lib/site_template/404.html +25 -25
  103. data/lib/site_template/_config.yml +55 -55
  104. data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +29 -29
  105. data/lib/site_template/about.markdown +18 -18
  106. data/lib/site_template/index.markdown +6 -6
  107. data/lib/theme_template/CODE_OF_CONDUCT.md.erb +74 -74
  108. data/lib/theme_template/Gemfile +4 -4
  109. data/lib/theme_template/LICENSE.txt.erb +21 -21
  110. data/lib/theme_template/README.md.erb +52 -52
  111. data/lib/theme_template/_layouts/default.html +1 -1
  112. data/lib/theme_template/_layouts/page.html +5 -5
  113. data/lib/theme_template/_layouts/post.html +5 -5
  114. data/lib/theme_template/example/_config.yml.erb +1 -1
  115. data/lib/theme_template/example/_post.md +12 -12
  116. data/lib/theme_template/example/index.html +14 -14
  117. data/lib/theme_template/example/style.scss +7 -7
  118. data/lib/theme_template/gitignore.erb +6 -6
  119. data/lib/theme_template/theme.gemspec.erb +16 -16
  120. data/rubocop/jekyll/assert_equal_literal_actual.rb +149 -149
  121. data/rubocop/jekyll/no_p_allowed.rb +23 -23
  122. data/rubocop/jekyll/no_puts_allowed.rb +23 -23
  123. data/rubocop/jekyll.rb +5 -5
  124. metadata +3 -3
@@ -1,195 +1,195 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- class Regenerator
5
- attr_reader :site, :metadata, :cache
6
- attr_accessor :disabled
7
- private :disabled, :disabled=
8
-
9
- def initialize(site)
10
- @site = site
11
-
12
- # Read metadata from file
13
- read_metadata
14
-
15
- # Initialize cache to an empty hash
16
- clear_cache
17
- end
18
-
19
- # Checks if a renderable object needs to be regenerated
20
- #
21
- # Returns a boolean.
22
- def regenerate?(document)
23
- return true if disabled
24
-
25
- case document
26
- when Page
27
- regenerate_page?(document)
28
- when Document
29
- regenerate_document?(document)
30
- else
31
- source_path = document.respond_to?(:path) ? document.path : nil
32
- dest_path = document.destination(@site.dest) if document.respond_to?(:destination)
33
- source_modified_or_dest_missing?(source_path, dest_path)
34
- end
35
- end
36
-
37
- # Add a path to the metadata
38
- #
39
- # Returns true, also on failure.
40
- def add(path)
41
- return true unless File.exist?(path)
42
-
43
- metadata[path] = {
44
- "mtime" => File.mtime(path),
45
- "deps" => [],
46
- }
47
- cache[path] = true
48
- end
49
-
50
- # Force a path to regenerate
51
- #
52
- # Returns true.
53
- def force(path)
54
- cache[path] = true
55
- end
56
-
57
- # Clear the metadata and cache
58
- #
59
- # Returns nothing
60
- def clear
61
- @metadata = {}
62
- clear_cache
63
- end
64
-
65
- # Clear just the cache
66
- #
67
- # Returns nothing
68
- def clear_cache
69
- @cache = {}
70
- end
71
-
72
- # Checks if the source has been modified or the
73
- # destination is missing
74
- #
75
- # returns a boolean
76
- def source_modified_or_dest_missing?(source_path, dest_path)
77
- modified?(source_path) || (dest_path && !File.exist?(dest_path))
78
- end
79
-
80
- # Checks if a path's (or one of its dependencies)
81
- # mtime has changed
82
- #
83
- # Returns a boolean.
84
- def modified?(path)
85
- return true if disabled?
86
-
87
- # objects that don't have a path are always regenerated
88
- return true if path.nil?
89
-
90
- # Check for path in cache
91
- return cache[path] if cache.key? path
92
-
93
- if metadata[path]
94
- # If we have seen this file before,
95
- # check if it or one of its dependencies has been modified
96
- existing_file_modified?(path)
97
- else
98
- # If we have not seen this file before, add it to the metadata and regenerate it
99
- add(path)
100
- end
101
- end
102
-
103
- # Add a dependency of a path
104
- #
105
- # Returns nothing.
106
- def add_dependency(path, dependency)
107
- return if metadata[path].nil? || disabled
108
-
109
- unless metadata[path]["deps"].include? dependency
110
- metadata[path]["deps"] << dependency
111
- add(dependency) unless metadata.include?(dependency)
112
- end
113
- regenerate? dependency
114
- end
115
-
116
- # Write the metadata to disk
117
- #
118
- # Returns nothing.
119
- def write_metadata
120
- unless disabled?
121
- Jekyll.logger.debug "Writing Metadata:", ".jekyll-metadata"
122
- File.binwrite(metadata_file, Marshal.dump(metadata))
123
- end
124
- end
125
-
126
- # Produce the absolute path of the metadata file
127
- #
128
- # Returns the String path of the file.
129
- def metadata_file
130
- @metadata_file ||= site.in_source_dir(".jekyll-metadata")
131
- end
132
-
133
- # Check if metadata has been disabled
134
- #
135
- # Returns a Boolean (true for disabled, false for enabled).
136
- def disabled?
137
- self.disabled = !site.incremental? if disabled.nil?
138
- disabled
139
- end
140
-
141
- private
142
-
143
- # Read metadata from the metadata file, if no file is found,
144
- # initialize with an empty hash
145
- #
146
- # Returns the read metadata.
147
- def read_metadata
148
- @metadata =
149
- if !disabled? && File.file?(metadata_file)
150
- content = File.binread(metadata_file)
151
-
152
- begin
153
- Marshal.load(content)
154
- rescue TypeError
155
- SafeYAML.load(content)
156
- rescue ArgumentError => e
157
- Jekyll.logger.warn("Failed to load #{metadata_file}: #{e}")
158
- {}
159
- end
160
- else
161
- {}
162
- end
163
- end
164
-
165
- def regenerate_page?(document)
166
- document.asset_file? || document.data["regenerate"] ||
167
- source_modified_or_dest_missing?(
168
- site.in_source_dir(document.relative_path), document.destination(@site.dest)
169
- )
170
- end
171
-
172
- def regenerate_document?(document)
173
- !document.write? || document.data["regenerate"] ||
174
- source_modified_or_dest_missing?(
175
- document.path, document.destination(@site.dest)
176
- )
177
- end
178
-
179
- def existing_file_modified?(path)
180
- # If one of this file dependencies have been modified,
181
- # set the regeneration bit for both the dependency and the file to true
182
- metadata[path]["deps"].each do |dependency|
183
- return cache[dependency] = cache[path] = true if modified?(dependency)
184
- end
185
-
186
- if File.exist?(path) && metadata[path]["mtime"].eql?(File.mtime(path))
187
- # If this file has not been modified, set the regeneration bit to false
188
- cache[path] = false
189
- else
190
- # If it has been modified, set it to true
191
- add(path)
192
- end
193
- end
194
- end
195
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ class Regenerator
5
+ attr_reader :site, :metadata, :cache
6
+ attr_accessor :disabled
7
+ private :disabled, :disabled=
8
+
9
+ def initialize(site)
10
+ @site = site
11
+
12
+ # Read metadata from file
13
+ read_metadata
14
+
15
+ # Initialize cache to an empty hash
16
+ clear_cache
17
+ end
18
+
19
+ # Checks if a renderable object needs to be regenerated
20
+ #
21
+ # Returns a boolean.
22
+ def regenerate?(document)
23
+ return true if disabled
24
+
25
+ case document
26
+ when Page
27
+ regenerate_page?(document)
28
+ when Document
29
+ regenerate_document?(document)
30
+ else
31
+ source_path = document.respond_to?(:path) ? document.path : nil
32
+ dest_path = document.destination(@site.dest) if document.respond_to?(:destination)
33
+ source_modified_or_dest_missing?(source_path, dest_path)
34
+ end
35
+ end
36
+
37
+ # Add a path to the metadata
38
+ #
39
+ # Returns true, also on failure.
40
+ def add(path)
41
+ return true unless File.exist?(path)
42
+
43
+ metadata[path] = {
44
+ "mtime" => File.mtime(path),
45
+ "deps" => [],
46
+ }
47
+ cache[path] = true
48
+ end
49
+
50
+ # Force a path to regenerate
51
+ #
52
+ # Returns true.
53
+ def force(path)
54
+ cache[path] = true
55
+ end
56
+
57
+ # Clear the metadata and cache
58
+ #
59
+ # Returns nothing
60
+ def clear
61
+ @metadata = {}
62
+ clear_cache
63
+ end
64
+
65
+ # Clear just the cache
66
+ #
67
+ # Returns nothing
68
+ def clear_cache
69
+ @cache = {}
70
+ end
71
+
72
+ # Checks if the source has been modified or the
73
+ # destination is missing
74
+ #
75
+ # returns a boolean
76
+ def source_modified_or_dest_missing?(source_path, dest_path)
77
+ modified?(source_path) || (dest_path && !File.exist?(dest_path))
78
+ end
79
+
80
+ # Checks if a path's (or one of its dependencies)
81
+ # mtime has changed
82
+ #
83
+ # Returns a boolean.
84
+ def modified?(path)
85
+ return true if disabled?
86
+
87
+ # objects that don't have a path are always regenerated
88
+ return true if path.nil?
89
+
90
+ # Check for path in cache
91
+ return cache[path] if cache.key? path
92
+
93
+ if metadata[path]
94
+ # If we have seen this file before,
95
+ # check if it or one of its dependencies has been modified
96
+ existing_file_modified?(path)
97
+ else
98
+ # If we have not seen this file before, add it to the metadata and regenerate it
99
+ add(path)
100
+ end
101
+ end
102
+
103
+ # Add a dependency of a path
104
+ #
105
+ # Returns nothing.
106
+ def add_dependency(path, dependency)
107
+ return if metadata[path].nil? || disabled
108
+
109
+ unless metadata[path]["deps"].include? dependency
110
+ metadata[path]["deps"] << dependency
111
+ add(dependency) unless metadata.include?(dependency)
112
+ end
113
+ regenerate? dependency
114
+ end
115
+
116
+ # Write the metadata to disk
117
+ #
118
+ # Returns nothing.
119
+ def write_metadata
120
+ unless disabled?
121
+ Jekyll.logger.debug "Writing Metadata:", ".jekyll-metadata"
122
+ File.binwrite(metadata_file, Marshal.dump(metadata))
123
+ end
124
+ end
125
+
126
+ # Produce the absolute path of the metadata file
127
+ #
128
+ # Returns the String path of the file.
129
+ def metadata_file
130
+ @metadata_file ||= site.in_source_dir(".jekyll-metadata")
131
+ end
132
+
133
+ # Check if metadata has been disabled
134
+ #
135
+ # Returns a Boolean (true for disabled, false for enabled).
136
+ def disabled?
137
+ self.disabled = !site.incremental? if disabled.nil?
138
+ disabled
139
+ end
140
+
141
+ private
142
+
143
+ # Read metadata from the metadata file, if no file is found,
144
+ # initialize with an empty hash
145
+ #
146
+ # Returns the read metadata.
147
+ def read_metadata
148
+ @metadata =
149
+ if !disabled? && File.file?(metadata_file)
150
+ content = File.binread(metadata_file)
151
+
152
+ begin
153
+ Marshal.load(content)
154
+ rescue TypeError
155
+ SafeYAML.load(content)
156
+ rescue ArgumentError => e
157
+ Jekyll.logger.warn("Failed to load #{metadata_file}: #{e}")
158
+ {}
159
+ end
160
+ else
161
+ {}
162
+ end
163
+ end
164
+
165
+ def regenerate_page?(document)
166
+ document.asset_file? || document.data["regenerate"] ||
167
+ source_modified_or_dest_missing?(
168
+ site.in_source_dir(document.relative_path), document.destination(@site.dest)
169
+ )
170
+ end
171
+
172
+ def regenerate_document?(document)
173
+ !document.write? || document.data["regenerate"] ||
174
+ source_modified_or_dest_missing?(
175
+ document.path, document.destination(@site.dest)
176
+ )
177
+ end
178
+
179
+ def existing_file_modified?(path)
180
+ # If one of this file dependencies have been modified,
181
+ # set the regeneration bit for both the dependency and the file to true
182
+ metadata[path]["deps"].each do |dependency|
183
+ return cache[dependency] = cache[path] = true if modified?(dependency)
184
+ end
185
+
186
+ if File.exist?(path) && metadata[path]["mtime"].eql?(File.mtime(path))
187
+ # If this file has not been modified, set the regeneration bit to false
188
+ cache[path] = false
189
+ else
190
+ # If it has been modified, set it to true
191
+ add(path)
192
+ end
193
+ end
194
+ end
195
+ end
@@ -1,52 +1,52 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- class RelatedPosts
5
- class << self
6
- attr_accessor :lsi
7
- end
8
-
9
- attr_reader :post, :site
10
-
11
- def initialize(post)
12
- @post = post
13
- @site = post.site
14
- Jekyll::External.require_with_graceful_fail("classifier-reborn") if site.lsi
15
- end
16
-
17
- def build
18
- return [] unless site.posts.docs.size > 1
19
-
20
- if site.lsi
21
- build_index
22
- lsi_related_posts
23
- else
24
- most_recent_posts
25
- end
26
- end
27
-
28
- def build_index
29
- self.class.lsi ||= begin
30
- lsi = ClassifierReborn::LSI.new(:auto_rebuild => false)
31
- Jekyll.logger.info("Populating LSI...")
32
-
33
- site.posts.docs.each do |x|
34
- lsi.add_item(x)
35
- end
36
-
37
- Jekyll.logger.info("Rebuilding index...")
38
- lsi.build_index
39
- Jekyll.logger.info("")
40
- lsi
41
- end
42
- end
43
-
44
- def lsi_related_posts
45
- self.class.lsi.find_related(post, 11)
46
- end
47
-
48
- def most_recent_posts
49
- @most_recent_posts ||= (site.posts.docs.last(11).reverse! - [post]).first(10)
50
- end
51
- end
52
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ class RelatedPosts
5
+ class << self
6
+ attr_accessor :lsi
7
+ end
8
+
9
+ attr_reader :post, :site
10
+
11
+ def initialize(post)
12
+ @post = post
13
+ @site = post.site
14
+ Jekyll::External.require_with_graceful_fail("classifier-reborn") if site.lsi
15
+ end
16
+
17
+ def build
18
+ return [] unless site.posts.docs.size > 1
19
+
20
+ if site.lsi
21
+ build_index
22
+ lsi_related_posts
23
+ else
24
+ most_recent_posts
25
+ end
26
+ end
27
+
28
+ def build_index
29
+ self.class.lsi ||= begin
30
+ lsi = ClassifierReborn::LSI.new(:auto_rebuild => false)
31
+ Jekyll.logger.info("Populating LSI...")
32
+
33
+ site.posts.docs.each do |x|
34
+ lsi.add_item(x)
35
+ end
36
+
37
+ Jekyll.logger.info("Rebuilding index...")
38
+ lsi.build_index
39
+ Jekyll.logger.info("")
40
+ lsi
41
+ end
42
+ end
43
+
44
+ def lsi_related_posts
45
+ self.class.lsi.find_related(post, 11)
46
+ end
47
+
48
+ def most_recent_posts
49
+ @most_recent_posts ||= (site.posts.docs.last(11).reverse! - [post]).first(10)
50
+ end
51
+ end
52
+ end