jekyll 3.2.0.pre.beta1 → 3.2.0.pre.beta2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jekyll might be problematic. Click here for more details.

Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +17 -95
  3. data/README.markdown +6 -4
  4. data/{bin → exe}/jekyll +18 -14
  5. data/lib/jekyll.rb +79 -76
  6. data/lib/jekyll/collection.rb +32 -16
  7. data/lib/jekyll/command.rb +17 -13
  8. data/lib/jekyll/commands/build.rb +7 -2
  9. data/lib/jekyll/commands/doctor.rb +3 -1
  10. data/lib/jekyll/commands/new.rb +3 -0
  11. data/lib/jekyll/commands/new_theme.rb +7 -4
  12. data/lib/jekyll/commands/serve.rb +2 -0
  13. data/lib/jekyll/commands/serve/servlet.rb +2 -2
  14. data/lib/jekyll/configuration.rb +187 -125
  15. data/lib/jekyll/converters/markdown.rb +19 -9
  16. data/lib/jekyll/converters/markdown/kramdown_parser.rb +12 -5
  17. data/lib/jekyll/converters/markdown/rdiscount_parser.rb +4 -4
  18. data/lib/jekyll/converters/markdown/redcarpet_parser.rb +90 -84
  19. data/lib/jekyll/convertible.rb +34 -21
  20. data/lib/jekyll/deprecator.rb +11 -6
  21. data/lib/jekyll/document.rb +52 -50
  22. data/lib/jekyll/drops/document_drop.rb +40 -5
  23. data/lib/jekyll/drops/drop.rb +49 -10
  24. data/lib/jekyll/drops/excerpt_drop.rb +15 -0
  25. data/lib/jekyll/drops/jekyll_drop.rb +12 -0
  26. data/lib/jekyll/drops/site_drop.rb +4 -2
  27. data/lib/jekyll/drops/url_drop.rb +4 -4
  28. data/lib/jekyll/entry_filter.rb +9 -6
  29. data/lib/jekyll/errors.rb +4 -3
  30. data/lib/jekyll/excerpt.rb +4 -6
  31. data/lib/jekyll/external.rb +4 -4
  32. data/lib/jekyll/filters.rb +67 -34
  33. data/lib/jekyll/frontmatter_defaults.rb +45 -38
  34. data/lib/jekyll/hooks.rb +21 -21
  35. data/lib/jekyll/layout.rb +3 -1
  36. data/lib/jekyll/liquid_renderer.rb +7 -3
  37. data/lib/jekyll/liquid_renderer/file.rb +1 -1
  38. data/lib/jekyll/liquid_renderer/table.rb +11 -11
  39. data/lib/jekyll/log_adapter.rb +2 -2
  40. data/lib/jekyll/page.rb +10 -10
  41. data/lib/jekyll/plugin.rb +5 -5
  42. data/lib/jekyll/plugin_manager.rb +12 -8
  43. data/lib/jekyll/publisher.rb +1 -1
  44. data/lib/jekyll/reader.rb +11 -7
  45. data/lib/jekyll/readers/data_reader.rb +9 -9
  46. data/lib/jekyll/readers/layout_reader.rb +7 -7
  47. data/lib/jekyll/readers/page_reader.rb +3 -1
  48. data/lib/jekyll/readers/post_reader.rb +9 -10
  49. data/lib/jekyll/readers/static_file_reader.rb +3 -1
  50. data/lib/jekyll/regenerator.rb +50 -28
  51. data/lib/jekyll/related_posts.rb +1 -1
  52. data/lib/jekyll/renderer.rb +29 -20
  53. data/lib/jekyll/site.rb +92 -50
  54. data/lib/jekyll/static_file.rb +33 -26
  55. data/lib/jekyll/stevenson.rb +6 -5
  56. data/lib/jekyll/tags/highlight.rb +50 -35
  57. data/lib/jekyll/tags/include.rb +42 -31
  58. data/lib/jekyll/tags/link.rb +11 -4
  59. data/lib/jekyll/tags/post_url.rb +8 -7
  60. data/lib/jekyll/theme.rb +4 -3
  61. data/lib/jekyll/theme_builder.rb +18 -6
  62. data/lib/jekyll/url.rb +21 -14
  63. data/lib/jekyll/utils.rb +57 -28
  64. data/lib/jekyll/utils/ansi.rb +9 -9
  65. data/lib/jekyll/utils/platforms.rb +2 -2
  66. data/lib/jekyll/version.rb +1 -1
  67. data/lib/site_template/_config.yml +2 -0
  68. data/lib/site_template/css/main.scss +3 -17
  69. data/lib/theme_template/_layouts/default.html +1 -0
  70. data/lib/theme_template/_layouts/page.html +5 -0
  71. data/lib/theme_template/_layouts/post.html +5 -0
  72. data/lib/theme_template/example/_post.md +1 -2
  73. data/lib/theme_template/example/index.html +2 -2
  74. data/lib/theme_template/gitignore.erb +4 -0
  75. data/lib/theme_template/theme.gemspec.erb +2 -6
  76. metadata +10 -18
  77. data/lib/site_template/_includes/footer.html +0 -38
  78. data/lib/site_template/_includes/head.html +0 -12
  79. data/lib/site_template/_includes/header.html +0 -27
  80. data/lib/site_template/_includes/icon-github.html +0 -1
  81. data/lib/site_template/_includes/icon-github.svg +0 -1
  82. data/lib/site_template/_includes/icon-twitter.html +0 -1
  83. data/lib/site_template/_includes/icon-twitter.svg +0 -1
  84. data/lib/site_template/_layouts/default.html +0 -20
  85. data/lib/site_template/_layouts/page.html +0 -14
  86. data/lib/site_template/_layouts/post.html +0 -15
  87. data/lib/site_template/_sass/_base.scss +0 -200
  88. data/lib/site_template/_sass/_layout.scss +0 -242
  89. data/lib/site_template/_sass/_syntax-highlighting.scss +0 -71
@@ -1,16 +1,25 @@
1
1
  module Jekyll
2
2
  class StaticFile
3
- # The cache of last modification times [path] -> mtime.
4
- @@mtimes = {}
5
-
6
3
  attr_reader :relative_path, :extname
7
4
 
5
+ class << self
6
+ # The cache of last modification times [path] -> mtime.
7
+ def mtimes
8
+ @mtimes ||= {}
9
+ end
10
+
11
+ def reset_cache
12
+ @mtimes = nil
13
+ end
14
+ end
15
+
8
16
  # Initialize a new StaticFile.
9
17
  #
10
18
  # site - The Site.
11
19
  # base - The String path to the <source>.
12
20
  # dir - The String path between <source> and the file.
13
21
  # name - The String filename of the file.
22
+ # rubocop: disable ParameterLists
14
23
  def initialize(site, base, dir, name, collection = nil)
15
24
  @site = site
16
25
  @base = base
@@ -20,6 +29,7 @@ module Jekyll
20
29
  @relative_path = File.join(*[@dir, @name].compact)
21
30
  @extname = File.extname(@name)
22
31
  end
32
+ # rubocop: enable ParameterLists
23
33
 
24
34
  # Returns source file path.
25
35
  def path
@@ -56,7 +66,7 @@ module Jekyll
56
66
  #
57
67
  # Returns true if modified since last write.
58
68
  def modified?
59
- @@mtimes[path] != mtime
69
+ self.class.mtimes[path] != mtime
60
70
  end
61
71
 
62
72
  # Whether to write the file to the filesystem
@@ -64,7 +74,7 @@ module Jekyll
64
74
  # Returns true unless the defaults for the destination path from
65
75
  # _config.yml contain `published: false`.
66
76
  def write?
67
- defaults.fetch('published', true)
77
+ defaults.fetch("published", true)
68
78
  end
69
79
 
70
80
  # Write the static file to the destination directory (if modified).
@@ -76,28 +86,15 @@ module Jekyll
76
86
  dest_path = destination(dest)
77
87
 
78
88
  return false if File.exist?(dest_path) && !modified?
79
- @@mtimes[path] = mtime
89
+ self.class.mtimes[path] = mtime
80
90
 
81
91
  FileUtils.mkdir_p(File.dirname(dest_path))
82
92
  FileUtils.rm(dest_path) if File.exist?(dest_path)
83
- if @site.safe || Jekyll.env == "production"
84
- FileUtils.cp(path, dest_path)
85
- else
86
- FileUtils.copy_entry(path, dest_path)
87
- end
88
- File.utime(@@mtimes[path], @@mtimes[path], dest_path)
93
+ copy_file(dest_path)
89
94
 
90
95
  true
91
96
  end
92
97
 
93
- # Reset the mtimes cache (for testing purposes).
94
- #
95
- # Returns nothing.
96
- def self.reset_cache
97
- @@mtimes = {}
98
- nil
99
- end
100
-
101
98
  def to_liquid
102
99
  {
103
100
  "extname" => extname,
@@ -109,11 +106,11 @@ module Jekyll
109
106
  def placeholders
110
107
  {
111
108
  :collection => @collection.label,
112
- :path => relative_path[
109
+ :path => relative_path[
113
110
  @collection.relative_directory.size..relative_path.size],
114
- :output_ext => '',
115
- :name => '',
116
- :title => ''
111
+ :output_ext => "",
112
+ :name => "",
113
+ :title => ""
117
114
  }
118
115
  end
119
116
 
@@ -125,10 +122,10 @@ module Jekyll
125
122
  relative_path
126
123
  else
127
124
  ::Jekyll::URL.new({
128
- :template => @collection.url_template,
125
+ :template => @collection.url_template,
129
126
  :placeholders => placeholders
130
127
  })
131
- end.to_s.gsub(/\/$/, '')
128
+ end.to_s.gsub(%r!/$!, "")
132
129
  end
133
130
 
134
131
  # Returns the type of the collection if present, nil otherwise.
@@ -141,5 +138,15 @@ module Jekyll
141
138
  def defaults
142
139
  @defaults ||= @site.frontmatter_defaults.all url, type
143
140
  end
141
+
142
+ private
143
+ def copy_file(dest_path)
144
+ if @site.safe || Jekyll.env == "production"
145
+ FileUtils.cp(path, dest_path)
146
+ else
147
+ FileUtils.copy_entry(path, dest_path)
148
+ end
149
+ File.utime(self.class.mtimes[path], self.class.mtimes[path], dest_path)
150
+ end
144
151
  end
145
152
  end
@@ -6,13 +6,13 @@ module Jekyll
6
6
  @default_formatter = Formatter.new
7
7
  @logdev = $stdout
8
8
  @formatter = proc do |_, _, _, msg|
9
- "#{msg}"
9
+ msg.to_s
10
10
  end
11
11
  end
12
12
 
13
- def add(severity, message = nil, progname = nil, &block)
13
+ def add(severity, message = nil, progname = nil)
14
14
  severity ||= UNKNOWN
15
- @logdev = set_logdevice(severity)
15
+ @logdev = logdevice(severity)
16
16
 
17
17
  if @logdev.nil? || severity < @level
18
18
  return true
@@ -27,7 +27,8 @@ module Jekyll
27
27
  end
28
28
  end
29
29
  @logdev.puts(
30
- format_message(format_severity(severity), Time.now, progname, message))
30
+ format_message(format_severity(severity), Time.now, progname, message)
31
+ )
31
32
  true
32
33
  end
33
34
 
@@ -47,7 +48,7 @@ module Jekyll
47
48
 
48
49
  private
49
50
 
50
- def set_logdevice(severity)
51
+ def logdevice(severity)
51
52
  if severity > INFO
52
53
  $stderr
53
54
  else
@@ -8,28 +8,15 @@ module Jekyll
8
8
  # forms: name, name=value, or name="<quoted list>"
9
9
  #
10
10
  # <quoted list> is a space-separated list of numbers
11
- SYNTAX = /^([a-zA-Z0-9.+#-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$/
11
+ SYNTAX = %r!^([a-zA-Z0-9.+#-]+)((\s+\w+(=(\w+|"([0-9]+\s)*[0-9]+"))?)*)$!
12
12
 
13
13
  def initialize(tag_name, markup, tokens)
14
14
  super
15
15
  if markup.strip =~ SYNTAX
16
16
  @lang = Regexp.last_match(1).downcase
17
- @highlight_options = {}
18
- if defined?(Regexp.last_match(2)) && Regexp.last_match(2) != ''
19
- # Split along 3 possible forms -- key="<quoted list>", key=value, or key
20
- Regexp.last_match(2).scan(/(?:\w="[^"]*"|\w=\w|\w)+/) do |opt|
21
- key, value = opt.split('=')
22
- # If a quoted list, convert to array
23
- if value && value.include?("\"")
24
- value.delete!('"')
25
- value = value.split
26
- end
27
- @highlight_options[key.to_sym] = value || true
28
- end
29
- end
30
- @highlight_options[:linenos] = "inline" if @highlight_options.key?(:linenos) && @highlight_options[:linenos] == true
17
+ @highlight_options = parse_options(Regexp.last_match(2))
31
18
  else
32
- raise SyntaxError.new <<-eos
19
+ raise SyntaxError, <<-eos
33
20
  Syntax Error in tag 'highlight' while parsing the following markup:
34
21
 
35
22
  #{markup}
@@ -42,15 +29,15 @@ eos
42
29
  def render(context)
43
30
  prefix = context["highlighter_prefix"] || ""
44
31
  suffix = context["highlighter_suffix"] || ""
45
- code = super.to_s.gsub(/\A(\n|\r)+|(\n|\r)+\z/, '')
32
+ code = super.to_s.gsub(%r!\A(\n|\r)+|(\n|\r)+\z!, "")
46
33
 
47
34
  is_safe = !!context.registers[:site].safe
48
35
 
49
36
  output =
50
37
  case context.registers[:site].highlighter
51
- when 'pygments'
38
+ when "pygments"
52
39
  render_pygments(code, is_safe)
53
- when 'rouge'
40
+ when "rouge"
54
41
  render_rouge(code)
55
42
  else
56
43
  render_codehighlighter(code)
@@ -66,7 +53,7 @@ eos
66
53
  [:startinline, opts.fetch(:startinline, nil)],
67
54
  [:hl_lines, opts.fetch(:hl_lines, nil)],
68
55
  [:linenos, opts.fetch(:linenos, nil)],
69
- [:encoding, opts.fetch(:encoding, 'utf-8')],
56
+ [:encoding, opts.fetch(:encoding, "utf-8")],
70
57
  [:cssclass, opts.fetch(:cssclass, nil)]
71
58
  ].reject { |f| f.last.nil? }]
72
59
  else
@@ -74,8 +61,30 @@ eos
74
61
  end
75
62
  end
76
63
 
64
+ private
65
+
66
+ def parse_options(input)
67
+ options = {}
68
+ unless input.empty?
69
+ # Split along 3 possible forms -- key="<quoted list>", key=value, or key
70
+ input.scan(%r!(?:\w="[^"]*"|\w=\w|\w)+!) do |opt|
71
+ key, value = opt.split("=")
72
+ # If a quoted list, convert to array
73
+ if value && value.include?("\"")
74
+ value.delete!('"')
75
+ value = value.split
76
+ end
77
+ options[key.to_sym] = value || true
78
+ end
79
+ end
80
+ if options.key?(:linenos) && options[:linenos] == true
81
+ options[:linenos] = "inline"
82
+ end
83
+ options
84
+ end
85
+
77
86
  def render_pygments(code, is_safe)
78
- Jekyll::External.require_with_graceful_fail('pygments')
87
+ Jekyll::External.require_with_graceful_fail("pygments")
79
88
 
80
89
  highlighted_code = Pygments.highlight(
81
90
  code,
@@ -84,22 +93,27 @@ eos
84
93
  )
85
94
 
86
95
  if highlighted_code.nil?
87
- Jekyll.logger.error "There was an error highlighting your code:"
88
- puts
89
- Jekyll.logger.error code
90
- puts
91
- Jekyll.logger.error "While attempting to convert the above code, Pygments.rb" \
92
- " returned an unacceptable value."
93
- Jekyll.logger.error "This is usually a timeout problem solved by running `jekyll build` again."
94
- raise ArgumentError.new("Pygments.rb returned an unacceptable value when attempting to highlight some code.")
96
+ Jekyll.logger.error <<eos
97
+ There was an error highlighting your code:
98
+
99
+ #{code}
100
+
101
+ While attempting to convert the above code, Pygments.rb returned an unacceptable value.
102
+ This is usually a timeout problem solved by running `jekyll build` again.
103
+ eos
104
+ raise ArgumentError, "Pygments.rb returned an unacceptable value "\
105
+ "when attempting to highlight some code."
95
106
  end
96
107
 
97
- highlighted_code.sub('<div class="highlight"><pre>', '').sub('</pre></div>', '')
108
+ highlighted_code.sub('<div class="highlight"><pre>', "").sub("</pre></div>", "")
98
109
  end
99
110
 
100
111
  def render_rouge(code)
101
- Jekyll::External.require_with_graceful_fail('rouge')
102
- formatter = Rouge::Formatters::HTML.new(:line_numbers => @highlight_options[:linenos], :wrap => false)
112
+ Jekyll::External.require_with_graceful_fail("rouge")
113
+ formatter = Rouge::Formatters::HTML.new(
114
+ :line_numbers => @highlight_options[:linenos],
115
+ :wrap => false
116
+ )
103
117
  lexer = Rouge::Lexer.find_fancy(@lang, code) || Rouge::Lexers::PlainText
104
118
  formatter.format(lexer.lex(code))
105
119
  end
@@ -110,13 +124,14 @@ eos
110
124
 
111
125
  def add_code_tag(code)
112
126
  code_attributes = [
113
- "class=\"language-#{@lang.to_s.tr('+', '-')}\"",
127
+ "class=\"language-#{@lang.to_s.tr("+", "-")}\"",
114
128
  "data-lang=\"#{@lang}\""
115
129
  ].join(" ")
116
- "<figure class=\"highlight\"><pre><code #{code_attributes}>#{code.chomp}</code></pre></figure>"
130
+ "<figure class=\"highlight\"><pre><code #{code_attributes}>"\
131
+ "#{code.chomp}</code></pre></figure>"
117
132
  end
118
133
  end
119
134
  end
120
135
  end
121
136
 
122
- Liquid::Template.register_tag('highlight', Jekyll::Tags::HighlightBlock)
137
+ Liquid::Template.register_tag("highlight", Jekyll::Tags::HighlightBlock)
@@ -12,17 +12,23 @@ module Jekyll
12
12
  end
13
13
 
14
14
  class IncludeTag < Liquid::Tag
15
- VALID_SYNTAX = /([\w-]+)\s*=\s*(?:"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'|([\w\.-]+))/
16
- VARIABLE_SYNTAX = /(?<variable>[^{]*(\{\{\s*[\w\-\.]+\s*(\|.*)?\}\}[^\s{}]*)+)(?<params>.*)/
15
+ VALID_SYNTAX = %r!
16
+ ([\w-]+)\s*=\s*
17
+ (?:"([^"\\]*(?:\\.[^"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)'|([\w\.-]+))
18
+ !x
19
+ VARIABLE_SYNTAX = %r!
20
+ (?<variable>[^{]*(\{\{\s*[\w\-\.]+\s*(\|.*)?\}\}[^\s{}]*)+)
21
+ (?<params>.*)
22
+ !x
17
23
 
18
24
  def initialize(tag_name, markup, tokens)
19
25
  super
20
26
  matched = markup.strip.match(VARIABLE_SYNTAX)
21
27
  if matched
22
- @file = matched['variable'].strip
23
- @params = matched['params'].strip
28
+ @file = matched["variable"].strip
29
+ @params = matched["params"].strip
24
30
  else
25
- @file, @params = markup.strip.split(' ', 2)
31
+ @file, @params = markup.strip.split(%r!\s+!, 2)
26
32
  end
27
33
  validate_params if @params
28
34
  @tag_name = tag_name
@@ -36,13 +42,13 @@ module Jekyll
36
42
  params = {}
37
43
  markup = @params
38
44
 
39
- while match = VALID_SYNTAX.match(markup) do
45
+ while (match = VALID_SYNTAX.match(markup))
40
46
  markup = markup[match.end(0)..-1]
41
47
 
42
48
  value = if match[2]
43
- match[2].gsub(/\\"/, '"')
49
+ match[2].gsub(%r!\\"!, '"')
44
50
  elsif match[3]
45
- match[3].gsub(/\\'/, "'")
51
+ match[3].gsub(%r!\\'!, "'")
46
52
  elsif match[4]
47
53
  context[match[4]]
48
54
  end
@@ -53,8 +59,8 @@ module Jekyll
53
59
  end
54
60
 
55
61
  def validate_file_name(file)
56
- if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./
57
- raise ArgumentError.new <<-eos
62
+ if file !~ %r!^[a-zA-Z0-9_/\.-]+$! || file =~ %r!\./! || file =~ %r!/\.!
63
+ raise ArgumentError, <<-eos
58
64
  Invalid syntax for include tag. File contains invalid characters or sequences:
59
65
 
60
66
  #{file}
@@ -68,9 +74,9 @@ eos
68
74
  end
69
75
 
70
76
  def validate_params
71
- full_valid_syntax = Regexp.compile('\A\s*(?:' + VALID_SYNTAX.to_s + '(?=\s|\z)\s*)*\z')
77
+ full_valid_syntax = %r!\A\s*(?:#{VALID_SYNTAX}(?=\s|\z)\s*)*\z!
72
78
  unless @params =~ full_valid_syntax
73
- raise ArgumentError.new <<-eos
79
+ raise ArgumentError, <<-eos
74
80
  Invalid syntax for include tag:
75
81
 
76
82
  #{@params}
@@ -91,7 +97,10 @@ eos
91
97
  # Render the variable if required
92
98
  def render_variable(context)
93
99
  if @file.match(VARIABLE_SYNTAX)
94
- partial = context.registers[:site].liquid_renderer.file("(variable)").parse(@file)
100
+ partial = context.registers[:site]
101
+ .liquid_renderer
102
+ .file("(variable)")
103
+ .parse(@file)
95
104
  partial.render!(context)
96
105
  end
97
106
  end
@@ -106,9 +115,9 @@ eos
106
115
  path = File.join(dir, file)
107
116
  return path if valid_include_file?(path, dir, safe)
108
117
  end
109
- raise IOError, "Could not locate the included file '#{file}' in any of #{includes_dirs}." \
110
- " Ensure it exists in one of those directories and, if it is a symlink, " \
111
- "does not point outside your site source."
118
+ raise IOError, "Could not locate the included file '#{file}' in any of "\
119
+ "#{includes_dirs}. Ensure it exists in one of those directories and, "\
120
+ "if it is a symlink, does not point outside your site source."
112
121
  end
113
122
 
114
123
  def render(context)
@@ -120,24 +129,23 @@ eos
120
129
  path = locate_include_file(context, file, site.safe)
121
130
  return unless path
122
131
 
123
- # Add include to dependency tree
132
+ add_include_to_dependency(site, path, context)
133
+
134
+ partial = load_cached_partial(path, context)
135
+
136
+ context.stack do
137
+ context["include"] = parse_params(context) if @params
138
+ partial.render!(context)
139
+ end
140
+ end
141
+
142
+ def add_include_to_dependency(site, path, context)
124
143
  if context.registers[:page] && context.registers[:page].key?("path")
125
144
  site.regenerator.add_dependency(
126
145
  site.in_source_dir(context.registers[:page]["path"]),
127
146
  path
128
147
  )
129
148
  end
130
-
131
- #begin
132
- partial = load_cached_partial(path, context)
133
-
134
- context.stack do
135
- context['include'] = parse_params(context) if @params
136
- partial.render!(context)
137
- end
138
- #rescue => e
139
- #raise IncludeTagError.new e.message, path
140
- #end
141
149
  end
142
150
 
143
151
  def load_cached_partial(path, context)
@@ -147,7 +155,10 @@ eos
147
155
  if cached_partial.key?(path)
148
156
  cached_partial[path]
149
157
  else
150
- cached_partial[path] = context.registers[:site].liquid_renderer.file(path).parse(read_file(path, context))
158
+ cached_partial[path] = context.registers[:site]
159
+ .liquid_renderer
160
+ .file(path)
161
+ .parse(read_file(path, context))
151
162
  end
152
163
  end
153
164
 
@@ -188,5 +199,5 @@ eos
188
199
  end
189
200
  end
190
201
 
191
- Liquid::Template.register_tag('include', Jekyll::Tags::IncludeTag)
192
- Liquid::Template.register_tag('include_relative', Jekyll::Tags::IncludeRelativeTag)
202
+ Liquid::Template.register_tag("include", Jekyll::Tags::IncludeTag)
203
+ Liquid::Template.register_tag("include_relative", Jekyll::Tags::IncludeRelativeTag)