Commit 1ca6aab3 authored by Laurent Heirendt's avatar Laurent Heirendt
Browse files

support for variables in title

parent 068c2c0e
...@@ -7,10 +7,10 @@ module Jekyll ...@@ -7,10 +7,10 @@ module Jekyll
end end
def initialize(tag_name, block_options, liquid_options) def initialize(tag_name, block_options, liquid_options)
@markup = block_options
super super
args = split_params(block_options) args = split_params(block_options)
@title = args[0]
# Optional - setting your own ID # Optional - setting your own ID
if args.length > 1 if args.length > 1
...@@ -19,23 +19,47 @@ module Jekyll ...@@ -19,23 +19,47 @@ module Jekyll
@block_id_html = "" @block_id_html = ""
end end
end end
# similar solution proposed here: https://stackoverflow.com/a/45393697
def get_value(context, expr)
args = split_params(expr)
# title in quotes, either double or single
if (expr[0]=='"' and expr[-1]=='"') or (expr[0]=="'" and expr[-1]=="'")
return expr[1..-2]
# expression contains a dot and is not longer than 20 characters
elsif expr.include? "." and args[0].length < 20
vars = expr.split('.')
result = context
vars.each do |variable|
result = result[variable] if result
end
return result
# title is given as a sequence of words
else
return args[0]
end
end
def render(context) def render(context)
site = context.registers[:site] site = context.registers[:site]
converter = site.find_converter_instance(::Jekyll::Converters::Markdown) converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
content = converter.convert(super) content = converter.convert(super)
title = get_value(context, @markup.strip)
output = <<~EOS output = <<~EOS
<div class="rtitle"#{@block_id_html}> <div class="rtitle"#{@block_id_html}>
<h2>#{@title}</h2> <h2>#{title}</h2>
<hr> <hr>
#{content} #{content}
</div> </div>
EOS EOS
output output
end end
end end
end end
end end
Liquid::Template.register_tag('rtitle', Jekyll::Tags::RtitleTag) Liquid::Template.register_tag('rtitle', Jekyll::Tags::RtitleTag)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment