Skip to content
Snippets Groups Projects
Commit ee555582 authored by Laurent Heirendt's avatar Laurent Heirendt :airplane:
Browse files

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

support for variables in title

See merge request core-services/jekyll-theme-lcsb-frozen-components!8
parents 068c2c0e 02182cb2
Branches master
Tags 0.0.3
1 merge request!8support for variables in title
...@@ -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,48 @@ module Jekyll ...@@ -19,23 +19,48 @@ 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.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) 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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment