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,240 +1,240 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- # This class handles custom defaults for YAML frontmatter settings.
5
- # These are set in _config.yml and apply both to internal use (e.g. layout)
6
- # and the data available to liquid.
7
- #
8
- # It is exposed via the frontmatter_defaults method on the site class.
9
- class FrontmatterDefaults
10
- # Initializes a new instance.
11
- def initialize(site)
12
- @site = site
13
- end
14
-
15
- def reset
16
- @glob_cache = {} if @glob_cache
17
- end
18
-
19
- def update_deprecated_types(set)
20
- return set unless set.key?("scope") && set["scope"].key?("type")
21
-
22
- set["scope"]["type"] =
23
- case set["scope"]["type"]
24
- when "page"
25
- Deprecator.defaults_deprecate_type("page", "pages")
26
- "pages"
27
- when "post"
28
- Deprecator.defaults_deprecate_type("post", "posts")
29
- "posts"
30
- when "draft"
31
- Deprecator.defaults_deprecate_type("draft", "drafts")
32
- "drafts"
33
- else
34
- set["scope"]["type"]
35
- end
36
-
37
- set
38
- end
39
-
40
- def ensure_time!(set)
41
- return set unless set.key?("values") && set["values"].key?("date")
42
- return set if set["values"]["date"].is_a?(Time)
43
-
44
- set["values"]["date"] = Utils.parse_date(
45
- set["values"]["date"],
46
- "An invalid date format was found in a front-matter default set: #{set}"
47
- )
48
- set
49
- end
50
-
51
- # Finds a default value for a given setting, filtered by path and type
52
- #
53
- # path - the path (relative to the source) of the page,
54
- # post or :draft the default is used in
55
- # type - a symbol indicating whether a :page,
56
- # a :post or a :draft calls this method
57
- #
58
- # Returns the default value or nil if none was found
59
- def find(path, type, setting)
60
- value = nil
61
- old_scope = nil
62
-
63
- matching_sets(path, type).each do |set|
64
- if set["values"].key?(setting) && has_precedence?(old_scope, set["scope"])
65
- value = set["values"][setting]
66
- old_scope = set["scope"]
67
- end
68
- end
69
- value
70
- end
71
-
72
- # Collects a hash with all default values for a page or post
73
- #
74
- # path - the relative path of the page or post
75
- # type - a symbol indicating the type (:post, :page or :draft)
76
- #
77
- # Returns a hash with all default values (an empty hash if there are none)
78
- def all(path, type)
79
- defaults = {}
80
- old_scope = nil
81
- matching_sets(path, type).each do |set|
82
- if has_precedence?(old_scope, set["scope"])
83
- defaults = Utils.deep_merge_hashes(defaults, set["values"])
84
- old_scope = set["scope"]
85
- else
86
- defaults = Utils.deep_merge_hashes(set["values"], defaults)
87
- end
88
- end
89
- defaults
90
- end
91
-
92
- private
93
-
94
- # Checks if a given default setting scope matches the given path and type
95
- #
96
- # scope - the hash indicating the scope, as defined in _config.yml
97
- # path - the path to check for
98
- # type - the type (:post, :page or :draft) to check for
99
- #
100
- # Returns true if the scope applies to the given type and path
101
- def applies?(scope, path, type)
102
- applies_type?(scope, type) && applies_path?(scope, path)
103
- end
104
-
105
- def applies_path?(scope, path)
106
- rel_scope_path = scope["path"]
107
- return true if !rel_scope_path.is_a?(String) || rel_scope_path.empty?
108
-
109
- sanitized_path = sanitize_path(path)
110
-
111
- if rel_scope_path.include?("*")
112
- glob_scope(sanitized_path, rel_scope_path)
113
- else
114
- path_is_subpath?(sanitized_path, strip_collections_dir(rel_scope_path))
115
- end
116
- end
117
-
118
- def glob_scope(sanitized_path, rel_scope_path)
119
- site_source = Pathname.new(@site.source)
120
- abs_scope_path = site_source.join(rel_scope_path).to_s
121
-
122
- glob_cache(abs_scope_path).each do |scope_path|
123
- scope_path = Pathname.new(scope_path).relative_path_from(site_source).to_s
124
- scope_path = strip_collections_dir(scope_path)
125
- Jekyll.logger.debug "Globbed Scope Path:", scope_path
126
- return true if path_is_subpath?(sanitized_path, scope_path)
127
- end
128
- false
129
- end
130
-
131
- def glob_cache(path)
132
- @glob_cache ||= {}
133
- @glob_cache[path] ||= Dir.glob(path)
134
- end
135
-
136
- def path_is_subpath?(path, parent_path)
137
- path.start_with?(parent_path)
138
- end
139
-
140
- def strip_collections_dir(path)
141
- collections_dir = @site.config["collections_dir"]
142
- slashed_coll_dir = collections_dir.empty? ? "/" : "#{collections_dir}/"
143
- return path if collections_dir.empty? || !path.to_s.start_with?(slashed_coll_dir)
144
-
145
- path.sub(slashed_coll_dir, "")
146
- end
147
-
148
- # Determines whether the scope applies to type.
149
- # The scope applies to the type if:
150
- # 1. no 'type' is specified
151
- # 2. the 'type' in the scope is the same as the type asked about
152
- #
153
- # scope - the Hash defaults set being asked about application
154
- # type - the type of the document being processed / asked about
155
- # its defaults.
156
- #
157
- # Returns true if either of the above conditions are satisfied,
158
- # otherwise returns false
159
- def applies_type?(scope, type)
160
- !scope.key?("type") || type&.to_sym.eql?(scope["type"].to_sym)
161
- end
162
-
163
- # Checks if a given set of default values is valid
164
- #
165
- # set - the default value hash, as defined in _config.yml
166
- #
167
- # Returns true if the set is valid and can be used in this class
168
- def valid?(set)
169
- set.is_a?(Hash) && set["values"].is_a?(Hash)
170
- end
171
-
172
- # Determines if a new scope has precedence over an old one
173
- #
174
- # old_scope - the old scope hash, or nil if there's none
175
- # new_scope - the new scope hash
176
- #
177
- # Returns true if the new scope has precedence over the older
178
- # rubocop: disable Naming/PredicateName
179
- def has_precedence?(old_scope, new_scope)
180
- return true if old_scope.nil?
181
-
182
- new_path = sanitize_path(new_scope["path"])
183
- old_path = sanitize_path(old_scope["path"])
184
-
185
- if new_path.length != old_path.length
186
- new_path.length >= old_path.length
187
- elsif new_scope.key?("type")
188
- true
189
- else
190
- !old_scope.key? "type"
191
- end
192
- end
193
- # rubocop: enable Naming/PredicateName
194
-
195
- # Collects a list of sets that match the given path and type
196
- #
197
- # Returns an array of hashes
198
- def matching_sets(path, type)
199
- @matched_set_cache ||= {}
200
- @matched_set_cache[path] ||= {}
201
- @matched_set_cache[path][type] ||= begin
202
- valid_sets.select do |set|
203
- !set.key?("scope") || applies?(set["scope"], path, type)
204
- end
205
- end
206
- end
207
-
208
- # Returns a list of valid sets
209
- #
210
- # This is not cached to allow plugins to modify the configuration
211
- # and have their changes take effect
212
- #
213
- # Returns an array of hashes
214
- def valid_sets
215
- sets = @site.config["defaults"]
216
- return [] unless sets.is_a?(Array)
217
-
218
- sets.map do |set|
219
- if valid?(set)
220
- ensure_time!(update_deprecated_types(set))
221
- else
222
- Jekyll.logger.warn "Defaults:", "An invalid front-matter default set was found:"
223
- Jekyll.logger.warn set.to_s
224
- nil
225
- end
226
- end.tap(&:compact!)
227
- end
228
-
229
- # Sanitizes the given path by removing a leading slash
230
- def sanitize_path(path)
231
- if path.nil? || path.empty?
232
- ""
233
- elsif path.start_with?("/")
234
- path.gsub(%r!\A/|(?<=[^/])\z!, "")
235
- else
236
- path
237
- end
238
- end
239
- end
240
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ # This class handles custom defaults for YAML frontmatter settings.
5
+ # These are set in _config.yml and apply both to internal use (e.g. layout)
6
+ # and the data available to liquid.
7
+ #
8
+ # It is exposed via the frontmatter_defaults method on the site class.
9
+ class FrontmatterDefaults
10
+ # Initializes a new instance.
11
+ def initialize(site)
12
+ @site = site
13
+ end
14
+
15
+ def reset
16
+ @glob_cache = {} if @glob_cache
17
+ end
18
+
19
+ def update_deprecated_types(set)
20
+ return set unless set.key?("scope") && set["scope"].key?("type")
21
+
22
+ set["scope"]["type"] =
23
+ case set["scope"]["type"]
24
+ when "page"
25
+ Deprecator.defaults_deprecate_type("page", "pages")
26
+ "pages"
27
+ when "post"
28
+ Deprecator.defaults_deprecate_type("post", "posts")
29
+ "posts"
30
+ when "draft"
31
+ Deprecator.defaults_deprecate_type("draft", "drafts")
32
+ "drafts"
33
+ else
34
+ set["scope"]["type"]
35
+ end
36
+
37
+ set
38
+ end
39
+
40
+ def ensure_time!(set)
41
+ return set unless set.key?("values") && set["values"].key?("date")
42
+ return set if set["values"]["date"].is_a?(Time)
43
+
44
+ set["values"]["date"] = Utils.parse_date(
45
+ set["values"]["date"],
46
+ "An invalid date format was found in a front-matter default set: #{set}"
47
+ )
48
+ set
49
+ end
50
+
51
+ # Finds a default value for a given setting, filtered by path and type
52
+ #
53
+ # path - the path (relative to the source) of the page,
54
+ # post or :draft the default is used in
55
+ # type - a symbol indicating whether a :page,
56
+ # a :post or a :draft calls this method
57
+ #
58
+ # Returns the default value or nil if none was found
59
+ def find(path, type, setting)
60
+ value = nil
61
+ old_scope = nil
62
+
63
+ matching_sets(path, type).each do |set|
64
+ if set["values"].key?(setting) && has_precedence?(old_scope, set["scope"])
65
+ value = set["values"][setting]
66
+ old_scope = set["scope"]
67
+ end
68
+ end
69
+ value
70
+ end
71
+
72
+ # Collects a hash with all default values for a page or post
73
+ #
74
+ # path - the relative path of the page or post
75
+ # type - a symbol indicating the type (:post, :page or :draft)
76
+ #
77
+ # Returns a hash with all default values (an empty hash if there are none)
78
+ def all(path, type)
79
+ defaults = {}
80
+ old_scope = nil
81
+ matching_sets(path, type).each do |set|
82
+ if has_precedence?(old_scope, set["scope"])
83
+ defaults = Utils.deep_merge_hashes(defaults, set["values"])
84
+ old_scope = set["scope"]
85
+ else
86
+ defaults = Utils.deep_merge_hashes(set["values"], defaults)
87
+ end
88
+ end
89
+ defaults
90
+ end
91
+
92
+ private
93
+
94
+ # Checks if a given default setting scope matches the given path and type
95
+ #
96
+ # scope - the hash indicating the scope, as defined in _config.yml
97
+ # path - the path to check for
98
+ # type - the type (:post, :page or :draft) to check for
99
+ #
100
+ # Returns true if the scope applies to the given type and path
101
+ def applies?(scope, path, type)
102
+ applies_type?(scope, type) && applies_path?(scope, path)
103
+ end
104
+
105
+ def applies_path?(scope, path)
106
+ rel_scope_path = scope["path"]
107
+ return true if !rel_scope_path.is_a?(String) || rel_scope_path.empty?
108
+
109
+ sanitized_path = sanitize_path(path)
110
+
111
+ if rel_scope_path.include?("*")
112
+ glob_scope(sanitized_path, rel_scope_path)
113
+ else
114
+ path_is_subpath?(sanitized_path, strip_collections_dir(rel_scope_path))
115
+ end
116
+ end
117
+
118
+ def glob_scope(sanitized_path, rel_scope_path)
119
+ site_source = Pathname.new(@site.source)
120
+ abs_scope_path = site_source.join(rel_scope_path).to_s
121
+
122
+ glob_cache(abs_scope_path).each do |scope_path|
123
+ scope_path = Pathname.new(scope_path).relative_path_from(site_source).to_s
124
+ scope_path = strip_collections_dir(scope_path)
125
+ Jekyll.logger.debug "Globbed Scope Path:", scope_path
126
+ return true if path_is_subpath?(sanitized_path, scope_path)
127
+ end
128
+ false
129
+ end
130
+
131
+ def glob_cache(path)
132
+ @glob_cache ||= {}
133
+ @glob_cache[path] ||= Dir.glob(path)
134
+ end
135
+
136
+ def path_is_subpath?(path, parent_path)
137
+ path.start_with?(parent_path)
138
+ end
139
+
140
+ def strip_collections_dir(path)
141
+ collections_dir = @site.config["collections_dir"]
142
+ slashed_coll_dir = collections_dir.empty? ? "/" : "#{collections_dir}/"
143
+ return path if collections_dir.empty? || !path.to_s.start_with?(slashed_coll_dir)
144
+
145
+ path.sub(slashed_coll_dir, "")
146
+ end
147
+
148
+ # Determines whether the scope applies to type.
149
+ # The scope applies to the type if:
150
+ # 1. no 'type' is specified
151
+ # 2. the 'type' in the scope is the same as the type asked about
152
+ #
153
+ # scope - the Hash defaults set being asked about application
154
+ # type - the type of the document being processed / asked about
155
+ # its defaults.
156
+ #
157
+ # Returns true if either of the above conditions are satisfied,
158
+ # otherwise returns false
159
+ def applies_type?(scope, type)
160
+ !scope.key?("type") || type&.to_sym.eql?(scope["type"].to_sym)
161
+ end
162
+
163
+ # Checks if a given set of default values is valid
164
+ #
165
+ # set - the default value hash, as defined in _config.yml
166
+ #
167
+ # Returns true if the set is valid and can be used in this class
168
+ def valid?(set)
169
+ set.is_a?(Hash) && set["values"].is_a?(Hash)
170
+ end
171
+
172
+ # Determines if a new scope has precedence over an old one
173
+ #
174
+ # old_scope - the old scope hash, or nil if there's none
175
+ # new_scope - the new scope hash
176
+ #
177
+ # Returns true if the new scope has precedence over the older
178
+ # rubocop: disable Naming/PredicateName
179
+ def has_precedence?(old_scope, new_scope)
180
+ return true if old_scope.nil?
181
+
182
+ new_path = sanitize_path(new_scope["path"])
183
+ old_path = sanitize_path(old_scope["path"])
184
+
185
+ if new_path.length != old_path.length
186
+ new_path.length >= old_path.length
187
+ elsif new_scope.key?("type")
188
+ true
189
+ else
190
+ !old_scope.key? "type"
191
+ end
192
+ end
193
+ # rubocop: enable Naming/PredicateName
194
+
195
+ # Collects a list of sets that match the given path and type
196
+ #
197
+ # Returns an array of hashes
198
+ def matching_sets(path, type)
199
+ @matched_set_cache ||= {}
200
+ @matched_set_cache[path] ||= {}
201
+ @matched_set_cache[path][type] ||= begin
202
+ valid_sets.select do |set|
203
+ !set.key?("scope") || applies?(set["scope"], path, type)
204
+ end
205
+ end
206
+ end
207
+
208
+ # Returns a list of valid sets
209
+ #
210
+ # This is not cached to allow plugins to modify the configuration
211
+ # and have their changes take effect
212
+ #
213
+ # Returns an array of hashes
214
+ def valid_sets
215
+ sets = @site.config["defaults"]
216
+ return [] unless sets.is_a?(Array)
217
+
218
+ sets.map do |set|
219
+ if valid?(set)
220
+ ensure_time!(update_deprecated_types(set))
221
+ else
222
+ Jekyll.logger.warn "Defaults:", "An invalid front-matter default set was found:"
223
+ Jekyll.logger.warn set.to_s
224
+ nil
225
+ end
226
+ end.tap(&:compact!)
227
+ end
228
+
229
+ # Sanitizes the given path by removing a leading slash
230
+ def sanitize_path(path)
231
+ if path.nil? || path.empty?
232
+ ""
233
+ elsif path.start_with?("/")
234
+ path.gsub(%r!\A/|(?<=[^/])\z!, "")
235
+ else
236
+ path
237
+ end
238
+ end
239
+ end
240
+ end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- Generator = Class.new(Plugin)
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ Generator = Class.new(Plugin)
5
+ end