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,113 +1,113 @@
1
- # frozen_string_literal: true
2
-
3
- module Jekyll
4
- module Converters
5
- # Markdown converter.
6
- # For more info on converters see https://jekyllrb.com/docs/plugins/converters/
7
- class Markdown < Converter
8
- highlighter_prefix "\n"
9
- highlighter_suffix "\n"
10
- safe true
11
-
12
- def setup
13
- return if @setup ||= false
14
-
15
- unless (@parser = get_processor)
16
- if @config["safe"]
17
- Jekyll.logger.warn "Build Warning:", "Custom processors are not loaded in safe mode"
18
- end
19
-
20
- Jekyll.logger.error "Markdown processor:",
21
- "#{@config["markdown"].inspect} is not a valid Markdown processor."
22
- Jekyll.logger.error "", "Available processors are: #{valid_processors.join(", ")}"
23
- Jekyll.logger.error ""
24
- raise Errors::FatalException, "Invalid Markdown processor given: #{@config["markdown"]}"
25
- end
26
-
27
- @cache = Jekyll::Cache.new("Jekyll::Converters::Markdown")
28
- @setup = true
29
- end
30
-
31
- # RuboCop does not allow reader methods to have names starting with `get_`
32
- # To ensure compatibility, this check has been disabled on this method
33
- #
34
- # rubocop:disable Naming/AccessorMethodName
35
- def get_processor
36
- case @config["markdown"].downcase
37
- when "kramdown" then KramdownParser.new(@config)
38
- else
39
- custom_processor
40
- end
41
- end
42
- # rubocop:enable Naming/AccessorMethodName
43
-
44
- # Public: Provides you with a list of processors comprised of the ones we support internally
45
- # and the ones that you have provided to us (if they're whitelisted for use in safe mode).
46
- #
47
- # Returns an array of symbols.
48
- def valid_processors
49
- [:kramdown] + third_party_processors
50
- end
51
-
52
- # Public: A list of processors that you provide via plugins.
53
- #
54
- # Returns an array of symbols
55
- def third_party_processors
56
- self.class.constants - [:KramdownParser, :PRIORITIES]
57
- end
58
-
59
- # Does the given extension match this converter's list of acceptable extensions?
60
- # Takes one argument: the file's extension (including the dot).
61
- #
62
- # ext - The String extension to check.
63
- #
64
- # Returns true if it matches, false otherwise.
65
- def matches(ext)
66
- extname_list.include?(ext.downcase)
67
- end
68
-
69
- # Public: The extension to be given to the output file (including the dot).
70
- #
71
- # ext - The String extension or original file.
72
- #
73
- # Returns The String output file extension.
74
- def output_ext(_ext)
75
- ".html"
76
- end
77
-
78
- # Logic to do the content conversion.
79
- #
80
- # content - String content of file (without front matter).
81
- #
82
- # Returns a String of the converted content.
83
- def convert(content)
84
- setup
85
- @cache.getset(content) do
86
- @parser.convert(content)
87
- end
88
- end
89
-
90
- def extname_list
91
- @extname_list ||= @config["markdown_ext"].split(",").map! { |e| ".#{e.downcase}" }
92
- end
93
-
94
- private
95
-
96
- def custom_processor
97
- converter_name = @config["markdown"]
98
- self.class.const_get(converter_name).new(@config) if custom_class_allowed?(converter_name)
99
- end
100
-
101
- # Private: Determine whether a class name is an allowed custom
102
- # markdown class name.
103
- #
104
- # parser_name - the name of the parser class
105
- #
106
- # Returns true if the parser name contains only alphanumeric characters and is defined
107
- # within Jekyll::Converters::Markdown
108
- def custom_class_allowed?(parser_name)
109
- parser_name !~ %r![^A-Za-z0-9_]! && self.class.constants.include?(parser_name.to_sym)
110
- end
111
- end
112
- end
113
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Converters
5
+ # Markdown converter.
6
+ # For more info on converters see https://jekyllrb.com/docs/plugins/converters/
7
+ class Markdown < Converter
8
+ highlighter_prefix "\n"
9
+ highlighter_suffix "\n"
10
+ safe true
11
+
12
+ def setup
13
+ return if @setup ||= false
14
+
15
+ unless (@parser = get_processor)
16
+ if @config["safe"]
17
+ Jekyll.logger.warn "Build Warning:", "Custom processors are not loaded in safe mode"
18
+ end
19
+
20
+ Jekyll.logger.error "Markdown processor:",
21
+ "#{@config["markdown"].inspect} is not a valid Markdown processor."
22
+ Jekyll.logger.error "", "Available processors are: #{valid_processors.join(", ")}"
23
+ Jekyll.logger.error ""
24
+ raise Errors::FatalException, "Invalid Markdown processor given: #{@config["markdown"]}"
25
+ end
26
+
27
+ @cache = Jekyll::Cache.new("Jekyll::Converters::Markdown")
28
+ @setup = true
29
+ end
30
+
31
+ # RuboCop does not allow reader methods to have names starting with `get_`
32
+ # To ensure compatibility, this check has been disabled on this method
33
+ #
34
+ # rubocop:disable Naming/AccessorMethodName
35
+ def get_processor
36
+ case @config["markdown"].downcase
37
+ when "kramdown" then KramdownParser.new(@config)
38
+ else
39
+ custom_processor
40
+ end
41
+ end
42
+ # rubocop:enable Naming/AccessorMethodName
43
+
44
+ # Public: Provides you with a list of processors comprised of the ones we support internally
45
+ # and the ones that you have provided to us (if they're whitelisted for use in safe mode).
46
+ #
47
+ # Returns an array of symbols.
48
+ def valid_processors
49
+ [:kramdown] + third_party_processors
50
+ end
51
+
52
+ # Public: A list of processors that you provide via plugins.
53
+ #
54
+ # Returns an array of symbols
55
+ def third_party_processors
56
+ self.class.constants - [:KramdownParser, :PRIORITIES]
57
+ end
58
+
59
+ # Does the given extension match this converter's list of acceptable extensions?
60
+ # Takes one argument: the file's extension (including the dot).
61
+ #
62
+ # ext - The String extension to check.
63
+ #
64
+ # Returns true if it matches, false otherwise.
65
+ def matches(ext)
66
+ extname_list.include?(ext.downcase)
67
+ end
68
+
69
+ # Public: The extension to be given to the output file (including the dot).
70
+ #
71
+ # ext - The String extension or original file.
72
+ #
73
+ # Returns The String output file extension.
74
+ def output_ext(_ext)
75
+ ".html"
76
+ end
77
+
78
+ # Logic to do the content conversion.
79
+ #
80
+ # content - String content of file (without front matter).
81
+ #
82
+ # Returns a String of the converted content.
83
+ def convert(content)
84
+ setup
85
+ @cache.getset(content) do
86
+ @parser.convert(content)
87
+ end
88
+ end
89
+
90
+ def extname_list
91
+ @extname_list ||= @config["markdown_ext"].split(",").map! { |e| ".#{e.downcase}" }
92
+ end
93
+
94
+ private
95
+
96
+ def custom_processor
97
+ converter_name = @config["markdown"]
98
+ self.class.const_get(converter_name).new(@config) if custom_class_allowed?(converter_name)
99
+ end
100
+
101
+ # Private: Determine whether a class name is an allowed custom
102
+ # markdown class name.
103
+ #
104
+ # parser_name - the name of the parser class
105
+ #
106
+ # Returns true if the parser name contains only alphanumeric characters and is defined
107
+ # within Jekyll::Converters::Markdown
108
+ def custom_class_allowed?(parser_name)
109
+ parser_name !~ %r![^A-Za-z0-9_]! && self.class.constants.include?(parser_name.to_sym)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -1,70 +1,70 @@
1
- # frozen_string_literal: true
2
-
3
- module Kramdown
4
- module Parser
5
- class SmartyPants < Kramdown::Parser::Kramdown
6
- def initialize(source, options)
7
- super
8
- @block_parsers = [:block_html, :content]
9
- @span_parsers = [:smart_quotes, :html_entity, :typographic_syms, :span_html]
10
- end
11
-
12
- def parse_content
13
- add_text @src.scan(%r!\A.*\n!)
14
- end
15
- define_parser(:content, %r!\A!)
16
- end
17
- end
18
- end
19
-
20
- module Jekyll
21
- module Converters
22
- # SmartyPants converter.
23
- # For more info on converters see https://jekyllrb.com/docs/plugins/converters/
24
- class SmartyPants < Converter
25
- safe true
26
- priority :low
27
-
28
- def initialize(config)
29
- Jekyll::External.require_with_graceful_fail "kramdown" unless defined?(Kramdown)
30
- @config = config["kramdown"].dup || {}
31
- @config[:input] = :SmartyPants
32
- end
33
-
34
- # Does the given extension match this converter's list of acceptable extensions?
35
- # Takes one argument: the file's extension (including the dot).
36
- #
37
- # ext - The String extension to check.
38
- #
39
- # Returns true if it matches, false otherwise.
40
- def matches(_ext)
41
- false
42
- end
43
-
44
- # Public: The extension to be given to the output file (including the dot).
45
- #
46
- # ext - The String extension or original file.
47
- #
48
- # Returns The String output file extension.
49
- def output_ext(_ext)
50
- nil
51
- end
52
-
53
- # Logic to do the content conversion.
54
- #
55
- # content - String content of file (without front matter).
56
- #
57
- # Returns a String of the converted content.
58
- def convert(content)
59
- document = Kramdown::Document.new(content, @config)
60
- html_output = document.to_html.chomp
61
- if @config["show_warnings"]
62
- document.warnings.each do |warning|
63
- Jekyll.logger.warn "Kramdown warning:", warning.sub(%r!^Warning:\s+!, "")
64
- end
65
- end
66
- html_output
67
- end
68
- end
69
- end
70
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Kramdown
4
+ module Parser
5
+ class SmartyPants < Kramdown::Parser::Kramdown
6
+ def initialize(source, options)
7
+ super
8
+ @block_parsers = [:block_html, :content]
9
+ @span_parsers = [:smart_quotes, :html_entity, :typographic_syms, :span_html]
10
+ end
11
+
12
+ def parse_content
13
+ add_text @src.scan(%r!\A.*\n!)
14
+ end
15
+ define_parser(:content, %r!\A!)
16
+ end
17
+ end
18
+ end
19
+
20
+ module Jekyll
21
+ module Converters
22
+ # SmartyPants converter.
23
+ # For more info on converters see https://jekyllrb.com/docs/plugins/converters/
24
+ class SmartyPants < Converter
25
+ safe true
26
+ priority :low
27
+
28
+ def initialize(config)
29
+ Jekyll::External.require_with_graceful_fail "kramdown" unless defined?(Kramdown)
30
+ @config = config["kramdown"].dup || {}
31
+ @config[:input] = :SmartyPants
32
+ end
33
+
34
+ # Does the given extension match this converter's list of acceptable extensions?
35
+ # Takes one argument: the file's extension (including the dot).
36
+ #
37
+ # ext - The String extension to check.
38
+ #
39
+ # Returns true if it matches, false otherwise.
40
+ def matches(_ext)
41
+ false
42
+ end
43
+
44
+ # Public: The extension to be given to the output file (including the dot).
45
+ #
46
+ # ext - The String extension or original file.
47
+ #
48
+ # Returns The String output file extension.
49
+ def output_ext(_ext)
50
+ nil
51
+ end
52
+
53
+ # Logic to do the content conversion.
54
+ #
55
+ # content - String content of file (without front matter).
56
+ #
57
+ # Returns a String of the converted content.
58
+ def convert(content)
59
+ document = Kramdown::Document.new(content, @config)
60
+ html_output = document.to_html.chomp
61
+ if @config["show_warnings"]
62
+ document.warnings.each do |warning|
63
+ Jekyll.logger.warn "Kramdown warning:", warning.sub(%r!^Warning:\s+!, "")
64
+ end
65
+ end
66
+ html_output
67
+ end
68
+ end
69
+ end
70
+ end