require "erb" module Jekyll module CodeExample class CodeExample < Liquid::Block def render(context) environment = context.environments.first environment['codeexample'] = {} # reset each time super template = ERB.new <<-EOF
<% environment['codeexample'].each_with_index do |(key, _), index| %> <% end %>
<% environment['codeexample'].each do |_, value| %>
<%= value %>
<% end %>
EOF template.result(binding) end end class CodeExampleTab < Liquid::Block alias_method :render_block, :render def initialize(tag_name, markup, tokens) super if markup == "" raise SyntaxError.new("No toggle name given in #{tag_name} tag") end @toggle = markup.strip end def render(context) site = context.registers[:site] converter = site.find_converter_instance(::Jekyll::Converters::Markdown) environment = context.environments.first environment['codeexample'] ||= {} environment['codeexample'][@toggle] = converter.convert(render_block(context)) end end end end Liquid::Template.register_tag("codeexampletab", Jekyll::CodeExample::CodeExampleTab) Liquid::Template.register_tag("codeexample", Jekyll::CodeExample::CodeExample)