class Jekyll::Figure::FigureTag

Public Class Methods

new(tag_name, markup, tokens) click to toggle source
Calls superclass method
# File lib/jekyll-figure.rb, line 5
def initialize(tag_name, markup, tokens)
  @markup = markup
  super
end

Public Instance Methods

render(context) click to toggle source
Calls superclass method
# File lib/jekyll-figure.rb, line 10
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

  @settings = site.config["jekyll-figure"]
  @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
  if @settings && @settings["paragraphs"] == false
    # Strip paragraphs
    figure_main = converter.convert(super(context)).gsub(/<\/?p[^>]*>/, "")
  else
    # Don't strip paragraphs
    figure_main = converter.convert(super(context))
  end

  # Used to escape markdown parsing rendering
  markdown_escape = "\ "

  # Render <figure>
  figure_tag =  "<figure#{figure_class}>"
  figure_tag += "#{figure_main}"
  figure_tag += "#{figure_caption}"
  figure_tag += "</figure>"
end