Sha256: af5c8d1d7bba307e04cec6c40dfb1c1b3b43782dbc7250bda65fba22c07b6ec0
Contents?: true
Size: 1.72 KB
Versions: 3
Compression:
Stored size: 1.72 KB
Contents
module Jekyll module Figure class FigureTag < Liquid::Block def initialize(tag_name, markup, tokens) @markup = markup super end def render(context) # Gather settings site = context.registers[:site] converter = site.find_converter_instance(::Jekyll::Converters::Markdown) # Render any liquid variables markup = Liquid::Template.parse(@markup).render(context) # Extract tag attributes attributes = {} markup.scan(Liquid::TagAttributes) do |key, value| attributes[key] = value end @caption = attributes['caption'] @class = attributes['class'] # Caption: convert markdown and remove paragraphs unless @caption.nil? figure_caption = @caption.gsub!(/\A"|"\Z/, '') figure_caption = converter.convert(figure_caption).gsub(/<\/?p[^>]*>/, '').chomp figure_caption = " <figcaption>#{figure_caption}</figcaption>\n" end # Class name(s) unless @class.nil? figure_class = @class.gsub!(/\A"|"\Z/, '') figure_class = " class\=\"#{figure_class}\"" end # Content: convert markdown and remove paragraphs containing images figure_main = converter.convert(super(context)).gsub(/^<p>\s*((<img[^<]+?)+)\s*<\/p>(.*)/, '\\1').gsub!(/[\n]+/, "\n "); # Used to escape markdown parsing rendering markdown_escape = "\ " # Render <figure> figure_tag = "<figure#{figure_class}>" figure_tag += "#{figure_main}\n" figure_tag += "#{figure_caption}" figure_tag += "</figure>" end end end end Liquid::Template.register_tag('figure', Jekyll::Figure::FigureTag)
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jekyll-figure-0.0.3 | lib/jekyll-figure.rb |
jekyll-figure-0.0.2 | lib/jekyll/figure.rb |
jekyll-figure-0.0.1 | lib/jekyll/figure.rb |