Commit ee555582 authored by Laurent Heirendt's avatar Laurent Heirendt
Browse files

Merge branch 'support-vars-in-title' into 'master'

support for variables in title

See merge request !8
parents 068c2c0e 02182cb2
......@@ -7,10 +7,10 @@ module Jekyll
end
def initialize(tag_name, block_options, liquid_options)
@markup = block_options
super
args = split_params(block_options)
@title = args[0]
# Optional - setting your own ID
if args.length > 1
......@@ -19,23 +19,48 @@ module Jekyll
@block_id_html = ""
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.start_with? "{{" and expr.end_with? "}}"
expr = expr[2..-3].strip
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)
site = context.registers[:site]
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
content = converter.convert(super)
title = get_value(context, @markup.strip)
output = <<~EOS
<div class="rtitle"#{@block_id_html}>
<h2>#{@title}</h2>
<h2>#{title}</h2>
<hr>
#{content}
</div>
EOS
output
end
end
end
end
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