jekyll 4.0.1 → 4.2.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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +350 -163
  3. data/LICENSE +21 -21
  4. data/README.markdown +86 -90
  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 -103
  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 -173
  18. data/lib/jekyll/commands/help.rb +34 -34
  19. data/lib/jekyll/commands/new.rb +169 -169
  20. data/lib/jekyll/commands/new_theme.rb +40 -42
  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 -354
  26. data/lib/jekyll/configuration.rb +313 -316
  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 -130
  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 -254
  33. data/lib/jekyll/deprecator.rb +50 -50
  34. data/lib/jekyll/document.rb +544 -522
  35. data/lib/jekyll/drops/collection_drop.rb +20 -20
  36. data/lib/jekyll/drops/document_drop.rb +70 -69
  37. data/lib/jekyll/drops/drop.rb +293 -215
  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 -132
  44. data/lib/jekyll/entry_filter.rb +121 -110
  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 -68
  51. data/lib/jekyll/filters.rb +535 -454
  52. data/lib/jekyll/frontmatter_defaults.rb +240 -245
  53. data/lib/jekyll/generator.rb +5 -5
  54. data/lib/jekyll/hooks.rb +107 -106
  55. data/lib/jekyll/inclusion.rb +32 -0
  56. data/lib/jekyll/layout.rb +67 -62
  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 -75
  60. data/lib/jekyll/liquid_renderer.rb +80 -77
  61. data/lib/jekyll/log_adapter.rb +151 -151
  62. data/lib/jekyll/mime.types +866 -866
  63. data/lib/jekyll/page.rb +217 -186
  64. data/lib/jekyll/page_excerpt.rb +25 -0
  65. data/lib/jekyll/page_without_a_file.rb +14 -14
  66. data/lib/jekyll/path_manager.rb +74 -31
  67. data/lib/jekyll/plugin.rb +92 -92
  68. data/lib/jekyll/plugin_manager.rb +115 -115
  69. data/lib/jekyll/profiler.rb +58 -0
  70. data/lib/jekyll/publisher.rb +23 -23
  71. data/lib/jekyll/reader.rb +192 -187
  72. data/lib/jekyll/readers/collection_reader.rb +23 -22
  73. data/lib/jekyll/readers/data_reader.rb +79 -75
  74. data/lib/jekyll/readers/layout_reader.rb +62 -61
  75. data/lib/jekyll/readers/page_reader.rb +25 -24
  76. data/lib/jekyll/readers/post_reader.rb +85 -84
  77. data/lib/jekyll/readers/static_file_reader.rb +25 -24
  78. data/lib/jekyll/readers/theme_assets_reader.rb +52 -51
  79. data/lib/jekyll/regenerator.rb +195 -195
  80. data/lib/jekyll/related_posts.rb +52 -52
  81. data/lib/jekyll/renderer.rb +265 -267
  82. data/lib/jekyll/site.rb +551 -527
  83. data/lib/jekyll/static_file.rb +208 -203
  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 -221
  87. data/lib/jekyll/tags/link.rb +42 -41
  88. data/lib/jekyll/tags/post_url.rb +106 -107
  89. data/lib/jekyll/theme.rb +86 -80
  90. data/lib/jekyll/theme_builder.rb +121 -121
  91. data/lib/jekyll/url.rb +167 -164
  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 -82
  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 -206
  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 -19
  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 +20 -38
@@ -1,110 +1,110 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- module Tags
5
- class HighlightBlock < Liquid::Block
6
- include Liquid::StandardFilters
7
-
8
- # The regular expression syntax checker. Start with the language specifier.
9
- # Follow that by zero or more space separated options that take one of three
10
- # forms: name, name=value, or name="<quoted list>"
11
- #
12
- # <quoted list> is a space-separated list of numbers
13
- SYNTAX = %r!^([a-zA-Z0-9.+#_-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$!.freeze
14
-
15
- def initialize(tag_name, markup, tokens)
16
- super
17
- if markup.strip =~ SYNTAX
18
- @lang = Regexp.last_match(1).downcase
19
- @highlight_options = parse_options(Regexp.last_match(2))
20
- else
21
- raise SyntaxError, <<~MSG
22
- Syntax Error in tag 'highlight' while parsing the following markup:
23
-
24
- #{markup}
25
-
26
- Valid syntax: highlight <lang> [linenos]
27
- MSG
28
- end
29
- end
30
-
31
- LEADING_OR_TRAILING_LINE_TERMINATORS = %r!\A(\n|\r)+|(\n|\r)+\z!.freeze
32
-
33
- def render(context)
34
- prefix = context["highlighter_prefix"] || ""
35
- suffix = context["highlighter_suffix"] || ""
36
- code = super.to_s.gsub(LEADING_OR_TRAILING_LINE_TERMINATORS, "")
37
-
38
- output =
39
- case context.registers[:site].highlighter
40
- when "rouge"
41
- render_rouge(code)
42
- when "pygments"
43
- render_pygments(code, context)
44
- else
45
- render_codehighlighter(code)
46
- end
47
-
48
- rendered_output = add_code_tag(output)
49
- prefix + rendered_output + suffix
50
- end
51
-
52
- private
53
-
54
- OPTIONS_REGEX = %r!(?:\w="[^"]*"|\w=\w|\w)+!.freeze
55
-
56
- def parse_options(input)
57
- options = {}
58
- return options if input.empty?
59
-
60
- # Split along 3 possible forms -- key="<quoted list>", key=value, or key
61
- input.scan(OPTIONS_REGEX) do |opt|
62
- key, value = opt.split("=")
63
- # If a quoted list, convert to array
64
- if value&.include?('"')
65
- value.delete!('"')
66
- value = value.split
67
- end
68
- options[key.to_sym] = value || true
69
- end
70
-
71
- options[:linenos] = "inline" if options[:linenos] == true
72
- options
73
- end
74
-
75
- def render_pygments(code, _context)
76
- Jekyll.logger.warn "Warning:", "Highlight Tag no longer supports rendering with Pygments."
77
- Jekyll.logger.warn "", "Using the default highlighter, Rouge, instead."
78
- render_rouge(code)
79
- end
80
-
81
- def render_rouge(code)
82
- require "rouge"
83
- formatter = ::Rouge::Formatters::HTMLLegacy.new(
84
- :line_numbers => @highlight_options[:linenos],
85
- :wrap => false,
86
- :css_class => "highlight",
87
- :gutter_class => "gutter",
88
- :code_class => "code"
89
- )
90
- lexer = ::Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText
91
- formatter.format(lexer.lex(code))
92
- end
93
-
94
- def render_codehighlighter(code)
95
- h(code).strip
96
- end
97
-
98
- def add_code_tag(code)
99
- code_attributes = [
100
- "class=\"language-#{@lang.to_s.tr("+", "-")}\"",
101
- "data-lang=\"#{@lang}\"",
102
- ].join(" ")
103
- "<figure class=\"highlight\"><pre><code #{code_attributes}>"\
104
- "#{code.chomp}</code></pre></figure>"
105
- end
106
- end
107
- end
108
- end
109
-
110
- Liquid::Template.register_tag("highlight", Jekyll::Tags::HighlightBlock)
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Tags
5
+ class HighlightBlock < Liquid::Block
6
+ include Liquid::StandardFilters
7
+
8
+ # The regular expression syntax checker. Start with the language specifier.
9
+ # Follow that by zero or more space separated options that take one of three
10
+ # forms: name, name=value, or name="<quoted list>"
11
+ #
12
+ # <quoted list> is a space-separated list of numbers
13
+ SYNTAX = %r!^([a-zA-Z0-9.+#_-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$!.freeze
14
+
15
+ def initialize(tag_name, markup, tokens)
16
+ super
17
+ if markup.strip =~ SYNTAX
18
+ @lang = Regexp.last_match(1).downcase
19
+ @highlight_options = parse_options(Regexp.last_match(2))
20
+ else
21
+ raise SyntaxError, <<~MSG
22
+ Syntax Error in tag 'highlight' while parsing the following markup:
23
+
24
+ #{markup}
25
+
26
+ Valid syntax: highlight <lang> [linenos]
27
+ MSG
28
+ end
29
+ end
30
+
31
+ LEADING_OR_TRAILING_LINE_TERMINATORS = %r!\A(\n|\r)+|(\n|\r)+\z!.freeze
32
+
33
+ def render(context)
34
+ prefix = context["highlighter_prefix"] || ""
35
+ suffix = context["highlighter_suffix"] || ""
36
+ code = super.to_s.gsub(LEADING_OR_TRAILING_LINE_TERMINATORS, "")
37
+
38
+ output =
39
+ case context.registers[:site].highlighter
40
+ when "rouge"
41
+ render_rouge(code)
42
+ when "pygments"
43
+ render_pygments(code, context)
44
+ else
45
+ render_codehighlighter(code)
46
+ end
47
+
48
+ rendered_output = add_code_tag(output)
49
+ prefix + rendered_output + suffix
50
+ end
51
+
52
+ private
53
+
54
+ OPTIONS_REGEX = %r!(?:\w="[^"]*"|\w=\w|\w)+!.freeze
55
+
56
+ def parse_options(input)
57
+ options = {}
58
+ return options if input.empty?
59
+
60
+ # Split along 3 possible forms -- key="<quoted list>", key=value, or key
61
+ input.scan(OPTIONS_REGEX) do |opt|
62
+ key, value = opt.split("=")
63
+ # If a quoted list, convert to array
64
+ if value&.include?('"')
65
+ value.delete!('"')
66
+ value = value.split
67
+ end
68
+ options[key.to_sym] = value || true
69
+ end
70
+
71
+ options[:linenos] = "inline" if options[:linenos] == true
72
+ options
73
+ end
74
+
75
+ def render_pygments(code, _context)
76
+ Jekyll.logger.warn "Warning:", "Highlight Tag no longer supports rendering with Pygments."
77
+ Jekyll.logger.warn "", "Using the default highlighter, Rouge, instead."
78
+ render_rouge(code)
79
+ end
80
+
81
+ def render_rouge(code)
82
+ require "rouge"
83
+ formatter = ::Rouge::Formatters::HTMLLegacy.new(
84
+ :line_numbers => @highlight_options[:linenos],
85
+ :wrap => false,
86
+ :css_class => "highlight",
87
+ :gutter_class => "gutter",
88
+ :code_class => "code"
89
+ )
90
+ lexer = ::Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText
91
+ formatter.format(lexer.lex(code))
92
+ end
93
+
94
+ def render_codehighlighter(code)
95
+ h(code).strip
96
+ end
97
+
98
+ def add_code_tag(code)
99
+ code_attributes = [
100
+ "class=\"language-#{@lang.to_s.tr("+", "-")}\"",
101
+ "data-lang=\"#{@lang}\"",
102
+ ].join(" ")
103
+ "<figure class=\"highlight\"><pre><code #{code_attributes}>"\
104
+ "#{code.chomp}</code></pre></figure>"
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ Liquid::Template.register_tag("highlight", Jekyll::Tags::HighlightBlock)