class Octopress::Tags::CaptionedImageTag::Tag
Public Class Methods
new(tag_name, markup, tokens)
click to toggle source
most of this class is copied from github.com/octopress/video-tag/blob/master/lib/octopress-video-tag.rb
Calls superclass method
# File lib/octo-captioned-image.rb, line 13 def initialize(tag_name, markup, tokens) @markup = markup super end
Public Instance Methods
extract_caption(markup)
click to toggle source
# File lib/octo-captioned-image.rb, line 54 def extract_caption(markup) # the markup other methods use to find params has the caption removed to avoid parsing issues caption, remaining_markup = CaptionExtractor.extract(markup) return caption, remaining_markup end
parse_options(option_string)
click to toggle source
# File lib/octo-captioned-image.rb, line 60 def parse_options(option_string) CaptionOptionsParser.new(option_string) end
process_liquid(context)
click to toggle source
# File lib/octo-captioned-image.rb, line 64 def process_liquid(context) Liquid::Template.parse(@markup).render!(context.environments.first) end
render(context)
click to toggle source
# File lib/octo-captioned-image.rb, line 18 def render(context) @markup = process_liquid(context) # what is this doing? should not replace markup caption, remaining_markup = extract_caption(@markup) options = parse_options(remaining_markup) figure_classes = ["captioned-image#{'-chrome' if options.chrome}"] figure_classes << "float-#{options.float}" if options.float figure_classes << "clear-#{options.clear}" if options.clear figure_class_decl = " class=\"#{figure_classes.join(' ')}\"" img_attributes = "" img_attributes += "width=\"#{options.width}\" " if options.width img_attributes += "height=\"#{options.height}\" " if options.height figcaption_class = "caption-#{options.position}" figcaption_class += "-chrome" if options.chrome fig_caption = [" <figcaption class=\"#{figcaption_class}\">"] fig_caption << " #{caption}" fig_caption << " </figcaption>" image = options.source.map do |src| # should this caption be escaped if it contains html or quotes? [" <img src=\"#{src}\" alt=\"#{caption}\" #{img_attributes}/>"] end figure_content = options.position == "top" ? fig_caption + image : image + fig_caption figure = ["<figure#{figure_class_decl}>"] figure += figure_content figure << "</figure>" return figure.join("\n") end