jekyll 3.9.3 → 4.4.1

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 (108) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +511 -89
  3. data/LICENSE +1 -1
  4. data/README.markdown +48 -27
  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/base.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/cache.rb +186 -0
  11. data/lib/jekyll/cleaner.rb +8 -7
  12. data/lib/jekyll/collection.rb +84 -11
  13. data/lib/jekyll/command.rb +33 -6
  14. data/lib/jekyll/commands/build.rb +8 -28
  15. data/lib/jekyll/commands/clean.rb +3 -2
  16. data/lib/jekyll/commands/doctor.rb +46 -35
  17. data/lib/jekyll/commands/help.rb +1 -1
  18. data/lib/jekyll/commands/new.rb +44 -50
  19. data/lib/jekyll/commands/new_theme.rb +27 -28
  20. data/lib/jekyll/commands/serve/live_reload_reactor.rb +9 -16
  21. data/lib/jekyll/commands/serve/servlet.rb +21 -22
  22. data/lib/jekyll/commands/serve/websockets.rb +1 -1
  23. data/lib/jekyll/commands/serve.rb +75 -97
  24. data/lib/jekyll/configuration.rb +66 -158
  25. data/lib/jekyll/converters/identity.rb +18 -0
  26. data/lib/jekyll/converters/markdown/kramdown_parser.rb +83 -33
  27. data/lib/jekyll/converters/markdown.rb +49 -40
  28. data/lib/jekyll/converters/smartypants.rb +34 -14
  29. data/lib/jekyll/convertible.rb +36 -34
  30. data/lib/jekyll/deprecator.rb +2 -4
  31. data/lib/jekyll/document.rb +107 -72
  32. data/lib/jekyll/drops/collection_drop.rb +3 -4
  33. data/lib/jekyll/drops/document_drop.rb +9 -3
  34. data/lib/jekyll/drops/drop.rb +115 -33
  35. data/lib/jekyll/drops/excerpt_drop.rb +8 -0
  36. data/lib/jekyll/drops/site_drop.rb +9 -8
  37. data/lib/jekyll/drops/static_file_drop.rb +4 -4
  38. data/lib/jekyll/drops/theme_drop.rb +39 -0
  39. data/lib/jekyll/drops/unified_payload_drop.rb +7 -2
  40. data/lib/jekyll/drops/url_drop.rb +55 -3
  41. data/lib/jekyll/entry_filter.rb +42 -51
  42. data/lib/jekyll/excerpt.rb +48 -38
  43. data/lib/jekyll/external.rb +20 -19
  44. data/lib/jekyll/filters/date_filters.rb +6 -3
  45. data/lib/jekyll/filters/grouping_filters.rb +1 -2
  46. data/lib/jekyll/filters/url_filters.rb +50 -15
  47. data/lib/jekyll/filters.rb +211 -50
  48. data/lib/jekyll/frontmatter_defaults.rb +45 -36
  49. data/lib/jekyll/hooks.rb +26 -26
  50. data/lib/jekyll/inclusion.rb +32 -0
  51. data/lib/jekyll/layout.rb +12 -19
  52. data/lib/jekyll/liquid_extensions.rb +0 -2
  53. data/lib/jekyll/liquid_renderer/file.rb +24 -3
  54. data/lib/jekyll/liquid_renderer/table.rb +26 -77
  55. data/lib/jekyll/liquid_renderer.rb +31 -16
  56. data/lib/jekyll/log_adapter.rb +5 -1
  57. data/lib/jekyll/page.rb +51 -23
  58. data/lib/jekyll/page_excerpt.rb +25 -0
  59. data/lib/jekyll/page_without_a_file.rb +0 -4
  60. data/lib/jekyll/path_manager.rb +74 -0
  61. data/lib/jekyll/plugin.rb +5 -11
  62. data/lib/jekyll/plugin_manager.rb +15 -5
  63. data/lib/jekyll/profiler.rb +51 -0
  64. data/lib/jekyll/reader.rb +65 -10
  65. data/lib/jekyll/readers/collection_reader.rb +1 -0
  66. data/lib/jekyll/readers/data_reader.rb +48 -10
  67. data/lib/jekyll/readers/layout_reader.rb +3 -12
  68. data/lib/jekyll/readers/page_reader.rb +5 -5
  69. data/lib/jekyll/readers/post_reader.rb +32 -19
  70. data/lib/jekyll/readers/static_file_reader.rb +4 -4
  71. data/lib/jekyll/readers/theme_assets_reader.rb +8 -5
  72. data/lib/jekyll/regenerator.rb +4 -12
  73. data/lib/jekyll/related_posts.rb +1 -1
  74. data/lib/jekyll/renderer.rb +34 -49
  75. data/lib/jekyll/site.rb +151 -58
  76. data/lib/jekyll/static_file.rb +64 -28
  77. data/lib/jekyll/stevenson.rb +4 -8
  78. data/lib/jekyll/tags/highlight.rb +44 -57
  79. data/lib/jekyll/tags/include.rb +114 -80
  80. data/lib/jekyll/tags/link.rb +12 -7
  81. data/lib/jekyll/tags/post_url.rb +33 -30
  82. data/lib/jekyll/theme.rb +20 -18
  83. data/lib/jekyll/theme_builder.rb +91 -89
  84. data/lib/jekyll/url.rb +18 -10
  85. data/lib/jekyll/utils/ansi.rb +2 -2
  86. data/lib/jekyll/utils/exec.rb +0 -1
  87. data/lib/jekyll/utils/internet.rb +2 -4
  88. data/lib/jekyll/utils/platforms.rb +37 -52
  89. data/lib/jekyll/utils/thread_event.rb +1 -5
  90. data/lib/jekyll/utils.rb +29 -28
  91. data/lib/jekyll/version.rb +1 -1
  92. data/lib/jekyll.rb +9 -14
  93. data/lib/site_template/.gitignore +2 -0
  94. data/lib/site_template/404.html +2 -1
  95. data/lib/site_template/_config.yml +17 -5
  96. data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +5 -1
  97. data/lib/theme_template/README.md.erb +1 -3
  98. data/lib/theme_template/gitignore.erb +1 -0
  99. data/lib/theme_template/theme.gemspec.erb +1 -4
  100. data/rubocop/jekyll/assert_equal_literal_actual.rb +150 -0
  101. data/rubocop/jekyll/no_p_allowed.rb +5 -6
  102. data/rubocop/jekyll/no_puts_allowed.rb +5 -6
  103. metadata +149 -37
  104. data/lib/jekyll/converters/markdown/rdiscount_parser.rb +0 -37
  105. data/lib/jekyll/converters/markdown/redcarpet_parser.rb +0 -112
  106. data/lib/jekyll/utils/rouge.rb +0 -22
  107. /data/lib/site_template/{about.md → about.markdown} +0 -0
  108. /data/lib/site_template/{index.md → index.markdown} +0 -0
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.3
4
+ version: 4.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
8
- autorequire:
8
+ - Parker Moore
9
+ - Matt Rogers
10
+ autorequire:
9
11
  bindir: exe
10
12
  cert_chain: []
11
- date: 2023-01-30 00:00:00.000000000 Z
13
+ date: 2025-01-29 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: addressable
@@ -24,6 +26,20 @@ dependencies:
24
26
  - - "~>"
25
27
  - !ruby/object:Gem::Version
26
28
  version: '2.4'
29
+ - !ruby/object:Gem::Dependency
30
+ name: base64
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0.2'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.2'
27
43
  - !ruby/object:Gem::Dependency
28
44
  name: colorator
29
45
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +54,20 @@ dependencies:
38
54
  - - "~>"
39
55
  - !ruby/object:Gem::Version
40
56
  version: '1.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: csv
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '3.0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.0'
41
71
  - !ruby/object:Gem::Dependency
42
72
  name: em-websocket
43
73
  requirement: !ruby/object:Gem::Requirement
@@ -54,52 +84,100 @@ dependencies:
54
84
  version: '0.5'
55
85
  - !ruby/object:Gem::Dependency
56
86
  name: i18n
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '1.0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '1.0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: jekyll-sass-converter
57
101
  requirement: !ruby/object:Gem::Requirement
58
102
  requirements:
59
103
  - - ">="
60
104
  - !ruby/object:Gem::Version
61
- version: '0.7'
105
+ version: '2.0'
62
106
  - - "<"
63
107
  - !ruby/object:Gem::Version
64
- version: '2'
108
+ version: '4.0'
65
109
  type: :runtime
66
110
  prerelease: false
67
111
  version_requirements: !ruby/object:Gem::Requirement
68
112
  requirements:
69
113
  - - ">="
70
114
  - !ruby/object:Gem::Version
71
- version: '0.7'
115
+ version: '2.0'
72
116
  - - "<"
73
117
  - !ruby/object:Gem::Version
74
- version: '2'
118
+ version: '4.0'
75
119
  - !ruby/object:Gem::Dependency
76
- name: jekyll-sass-converter
120
+ name: jekyll-watch
77
121
  requirement: !ruby/object:Gem::Requirement
78
122
  requirements:
79
123
  - - "~>"
80
124
  - !ruby/object:Gem::Version
81
- version: '1.0'
125
+ version: '2.0'
82
126
  type: :runtime
83
127
  prerelease: false
84
128
  version_requirements: !ruby/object:Gem::Requirement
85
129
  requirements:
86
130
  - - "~>"
87
131
  - !ruby/object:Gem::Version
88
- version: '1.0'
132
+ version: '2.0'
89
133
  - !ruby/object:Gem::Dependency
90
- name: jekyll-watch
134
+ name: json
91
135
  requirement: !ruby/object:Gem::Requirement
92
136
  requirements:
93
137
  - - "~>"
94
138
  - !ruby/object:Gem::Version
95
- version: '2.0'
139
+ version: '2.6'
96
140
  type: :runtime
97
141
  prerelease: false
98
142
  version_requirements: !ruby/object:Gem::Requirement
99
143
  requirements:
100
144
  - - "~>"
101
145
  - !ruby/object:Gem::Version
102
- version: '2.0'
146
+ version: '2.6'
147
+ - !ruby/object:Gem::Dependency
148
+ name: kramdown
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '2.3'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 2.3.1
157
+ type: :runtime
158
+ prerelease: false
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '2.3'
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 2.3.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: kramdown-parser-gfm
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.0'
103
181
  - !ruby/object:Gem::Dependency
104
182
  name: liquid
105
183
  requirement: !ruby/object:Gem::Requirement
@@ -120,14 +198,20 @@ dependencies:
120
198
  requirements:
121
199
  - - "~>"
122
200
  - !ruby/object:Gem::Version
123
- version: 0.3.3
201
+ version: '0.3'
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: 0.3.6
124
205
  type: :runtime
125
206
  prerelease: false
126
207
  version_requirements: !ruby/object:Gem::Requirement
127
208
  requirements:
128
209
  - - "~>"
129
210
  - !ruby/object:Gem::Version
130
- version: 0.3.3
211
+ version: '0.3'
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: 0.3.6
131
215
  - !ruby/object:Gem::Dependency
132
216
  name: pathutil
133
217
  requirement: !ruby/object:Gem::Requirement
@@ -148,20 +232,20 @@ dependencies:
148
232
  requirements:
149
233
  - - ">="
150
234
  - !ruby/object:Gem::Version
151
- version: '1.7'
235
+ version: '3.0'
152
236
  - - "<"
153
237
  - !ruby/object:Gem::Version
154
- version: '4'
238
+ version: '5.0'
155
239
  type: :runtime
156
240
  prerelease: false
157
241
  version_requirements: !ruby/object:Gem::Requirement
158
242
  requirements:
159
243
  - - ">="
160
244
  - !ruby/object:Gem::Version
161
- version: '1.7'
245
+ version: '3.0'
162
246
  - - "<"
163
247
  - !ruby/object:Gem::Version
164
- version: '4'
248
+ version: '5.0'
165
249
  - !ruby/object:Gem::Dependency
166
250
  name: safe_yaml
167
251
  requirement: !ruby/object:Gem::Requirement
@@ -177,27 +261,42 @@ dependencies:
177
261
  - !ruby/object:Gem::Version
178
262
  version: '1.0'
179
263
  - !ruby/object:Gem::Dependency
180
- name: kramdown
264
+ name: terminal-table
181
265
  requirement: !ruby/object:Gem::Requirement
182
266
  requirements:
183
267
  - - ">="
184
268
  - !ruby/object:Gem::Version
185
- version: '1.17'
269
+ version: '1.8'
186
270
  - - "<"
187
271
  - !ruby/object:Gem::Version
188
- version: '3'
272
+ version: '4.0'
189
273
  type: :runtime
190
274
  prerelease: false
191
275
  version_requirements: !ruby/object:Gem::Requirement
192
276
  requirements:
193
277
  - - ">="
194
278
  - !ruby/object:Gem::Version
195
- version: '1.17'
279
+ version: '1.8'
196
280
  - - "<"
197
281
  - !ruby/object:Gem::Version
198
- version: '3'
282
+ version: '4.0'
283
+ - !ruby/object:Gem::Dependency
284
+ name: webrick
285
+ requirement: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - "~>"
288
+ - !ruby/object:Gem::Version
289
+ version: '1.7'
290
+ type: :runtime
291
+ prerelease: false
292
+ version_requirements: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - "~>"
295
+ - !ruby/object:Gem::Version
296
+ version: '1.7'
199
297
  description: Jekyll is a simple, blog aware, static site generator.
200
- email: tom@mojombo.com
298
+ email:
299
+ - maintainers@jekyllrb.com
201
300
  executables:
202
301
  - jekyll
203
302
  extensions: []
@@ -209,7 +308,13 @@ files:
209
308
  - LICENSE
210
309
  - README.markdown
211
310
  - exe/jekyll
311
+ - lib/blank_template/_config.yml
312
+ - lib/blank_template/_layouts/default.html
313
+ - lib/blank_template/_sass/base.scss
314
+ - lib/blank_template/assets/css/main.scss
315
+ - lib/blank_template/index.md
212
316
  - lib/jekyll.rb
317
+ - lib/jekyll/cache.rb
213
318
  - lib/jekyll/cleaner.rb
214
319
  - lib/jekyll/collection.rb
215
320
  - lib/jekyll/command.rb
@@ -230,8 +335,6 @@ files:
230
335
  - lib/jekyll/converters/identity.rb
231
336
  - lib/jekyll/converters/markdown.rb
232
337
  - lib/jekyll/converters/markdown/kramdown_parser.rb
233
- - lib/jekyll/converters/markdown/rdiscount_parser.rb
234
- - lib/jekyll/converters/markdown/redcarpet_parser.rb
235
338
  - lib/jekyll/converters/smartypants.rb
236
339
  - lib/jekyll/convertible.rb
237
340
  - lib/jekyll/deprecator.rb
@@ -243,6 +346,7 @@ files:
243
346
  - lib/jekyll/drops/jekyll_drop.rb
244
347
  - lib/jekyll/drops/site_drop.rb
245
348
  - lib/jekyll/drops/static_file_drop.rb
349
+ - lib/jekyll/drops/theme_drop.rb
246
350
  - lib/jekyll/drops/unified_payload_drop.rb
247
351
  - lib/jekyll/drops/url_drop.rb
248
352
  - lib/jekyll/entry_filter.rb
@@ -256,6 +360,7 @@ files:
256
360
  - lib/jekyll/frontmatter_defaults.rb
257
361
  - lib/jekyll/generator.rb
258
362
  - lib/jekyll/hooks.rb
363
+ - lib/jekyll/inclusion.rb
259
364
  - lib/jekyll/layout.rb
260
365
  - lib/jekyll/liquid_extensions.rb
261
366
  - lib/jekyll/liquid_renderer.rb
@@ -264,9 +369,12 @@ files:
264
369
  - lib/jekyll/log_adapter.rb
265
370
  - lib/jekyll/mime.types
266
371
  - lib/jekyll/page.rb
372
+ - lib/jekyll/page_excerpt.rb
267
373
  - lib/jekyll/page_without_a_file.rb
374
+ - lib/jekyll/path_manager.rb
268
375
  - lib/jekyll/plugin.rb
269
376
  - lib/jekyll/plugin_manager.rb
377
+ - lib/jekyll/profiler.rb
270
378
  - lib/jekyll/publisher.rb
271
379
  - lib/jekyll/reader.rb
272
380
  - lib/jekyll/readers/collection_reader.rb
@@ -294,7 +402,6 @@ files:
294
402
  - lib/jekyll/utils/exec.rb
295
403
  - lib/jekyll/utils/internet.rb
296
404
  - lib/jekyll/utils/platforms.rb
297
- - lib/jekyll/utils/rouge.rb
298
405
  - lib/jekyll/utils/thread_event.rb
299
406
  - lib/jekyll/utils/win_tz.rb
300
407
  - lib/jekyll/version.rb
@@ -302,8 +409,8 @@ files:
302
409
  - lib/site_template/404.html
303
410
  - lib/site_template/_config.yml
304
411
  - lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb
305
- - lib/site_template/about.md
306
- - lib/site_template/index.md
412
+ - lib/site_template/about.markdown
413
+ - lib/site_template/index.markdown
307
414
  - lib/theme_template/CODE_OF_CONDUCT.md.erb
308
415
  - lib/theme_template/Gemfile
309
416
  - lib/theme_template/LICENSE.txt.erb
@@ -318,13 +425,18 @@ files:
318
425
  - lib/theme_template/gitignore.erb
319
426
  - lib/theme_template/theme.gemspec.erb
320
427
  - rubocop/jekyll.rb
428
+ - rubocop/jekyll/assert_equal_literal_actual.rb
321
429
  - rubocop/jekyll/no_p_allowed.rb
322
430
  - rubocop/jekyll/no_puts_allowed.rb
323
- homepage: https://github.com/jekyll/jekyll
431
+ homepage: https://jekyllrb.com
324
432
  licenses:
325
433
  - MIT
326
- metadata: {}
327
- post_install_message:
434
+ metadata:
435
+ source_code_uri: https://github.com/jekyll/jekyll
436
+ bug_tracker_uri: https://github.com/jekyll/jekyll/issues
437
+ changelog_uri: https://github.com/jekyll/jekyll/releases
438
+ homepage_uri: https://jekyllrb.com
439
+ post_install_message:
328
440
  rdoc_options:
329
441
  - "--charset=UTF-8"
330
442
  require_paths:
@@ -333,15 +445,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
333
445
  requirements:
334
446
  - - ">="
335
447
  - !ruby/object:Gem::Version
336
- version: 2.1.0
448
+ version: 2.7.0
337
449
  required_rubygems_version: !ruby/object:Gem::Requirement
338
450
  requirements:
339
451
  - - ">="
340
452
  - !ruby/object:Gem::Version
341
- version: '0'
453
+ version: 2.7.0
342
454
  requirements: []
343
455
  rubygems_version: 3.1.6
344
- signing_key:
345
- specification_version: 2
456
+ signing_key:
457
+ specification_version: 4
346
458
  summary: A simple, blog aware, static site generator.
347
459
  test_files: []
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- module Converters
5
- class Markdown
6
- class RDiscountParser
7
- def initialize(config)
8
- unless defined?(RDiscount)
9
- Jekyll::External.require_with_graceful_fail "rdiscount"
10
- end
11
- @config = config
12
- @rdiscount_extensions = @config["rdiscount"]["extensions"].map(&:to_sym)
13
- end
14
-
15
- def convert(content)
16
- rd = RDiscount.new(content, *@rdiscount_extensions)
17
- html = rd.to_html
18
- if @config["rdiscount"]["toc_token"]
19
- html = replace_generated_toc(rd, html, @config["rdiscount"]["toc_token"])
20
- end
21
- html
22
- end
23
-
24
- private
25
- def replace_generated_toc(rd_instance, html, toc_token)
26
- if rd_instance.generate_toc && html.include?(toc_token)
27
- utf8_toc = rd_instance.toc_content
28
- utf8_toc.force_encoding("utf-8") if utf8_toc.respond_to?(:force_encoding)
29
- html.gsub(toc_token, utf8_toc)
30
- else
31
- html
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,112 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Jekyll::Converters::Markdown::RedcarpetParser
4
- module CommonMethods
5
- def add_code_tags(code, lang)
6
- code = code.to_s
7
- code = code.sub(
8
- %r!<pre>!,
9
- "<pre><code class=\"language-#{lang}\" data-lang=\"#{lang}\">"
10
- )
11
- code = code.sub(%r!</pre>!, "</code></pre>")
12
- code
13
- end
14
- end
15
-
16
- module WithPygments
17
- include CommonMethods
18
- def block_code(code, lang)
19
- unless defined?(Pygments)
20
- Jekyll::External.require_with_graceful_fail("pygments")
21
- end
22
- lang = lang && lang.split.first || "text"
23
- add_code_tags(
24
- Pygments.highlight(
25
- code,
26
- {
27
- :lexer => lang,
28
- :options => { :encoding => "utf-8" },
29
- }
30
- ),
31
- lang
32
- )
33
- end
34
- end
35
-
36
- module WithoutHighlighting
37
- require "cgi"
38
-
39
- include CommonMethods
40
-
41
- def code_wrap(code)
42
- "<figure class=\"highlight\"><pre>#{CGI.escapeHTML(code)}</pre></figure>"
43
- end
44
-
45
- def block_code(code, lang)
46
- lang = lang && lang.split.first || "text"
47
- add_code_tags(code_wrap(code), lang)
48
- end
49
- end
50
-
51
- module WithRouge
52
- def block_code(_code, lang)
53
- code = "<pre>#{super}</pre>"
54
-
55
- "<div class=\"highlight\">#{add_code_tags(code, lang)}</div>"
56
- end
57
-
58
- protected
59
- def rouge_formatter(_lexer)
60
- Jekyll::Utils::Rouge.html_formatter(:wrap => false)
61
- end
62
- end
63
-
64
- def initialize(config)
65
- unless defined?(Redcarpet)
66
- Jekyll::External.require_with_graceful_fail("redcarpet")
67
- end
68
- @config = config
69
- @redcarpet_extensions = {}
70
- @config["redcarpet"]["extensions"].each do |e|
71
- @redcarpet_extensions[e.to_sym] = true
72
- end
73
-
74
- @renderer ||= class_with_proper_highlighter(@config["highlighter"])
75
- end
76
-
77
- def class_with_proper_highlighter(highlighter)
78
- Class.new(Redcarpet::Render::HTML) do
79
- case highlighter
80
- when "pygments"
81
- include WithPygments
82
- when "rouge"
83
- Jekyll::External.require_with_graceful_fail(%w(
84
- rouge rouge/plugins/redcarpet
85
- ))
86
-
87
- unless Gem::Version.new(Rouge.version) > Gem::Version.new("1.3.0")
88
- abort "Please install Rouge 1.3.0 or greater and try running Jekyll again."
89
- end
90
-
91
- include Rouge::Plugins::Redcarpet
92
- include CommonMethods
93
- include WithRouge
94
- else
95
- include WithoutHighlighting
96
- end
97
- end
98
- end
99
-
100
- def convert(content)
101
- @redcarpet_extensions[:fenced_code_blocks] = \
102
- !@redcarpet_extensions[:no_fenced_code_blocks]
103
- if @redcarpet_extensions[:smart]
104
- @renderer.send :include, Redcarpet::Render::SmartyPants
105
- end
106
- markdown = Redcarpet::Markdown.new(
107
- @renderer.new(@redcarpet_extensions),
108
- @redcarpet_extensions
109
- )
110
- markdown.render(content)
111
- end
112
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Jekyll::External.require_with_graceful_fail("rouge")
4
-
5
- module Jekyll
6
- module Utils
7
- module Rouge
8
-
9
- def self.html_formatter(*args)
10
- if old_api?
11
- ::Rouge::Formatters::HTML.new(*args)
12
- else
13
- ::Rouge::Formatters::HTMLLegacy.new(*args)
14
- end
15
- end
16
-
17
- def self.old_api?
18
- ::Rouge.version.to_s < "2"
19
- end
20
- end
21
- end
22
- end
File without changes
File without changes