mirror of
https://github.com/WatchOutNewsAgency/wona.github.com.git
synced 2026-01-01 01:16:26 +00:00
Moved plugins to root directory. I'm ditching the idea of shipping plugins with themes until it's more obviously necessary. This way it's easier to merge and update plugins.
This commit is contained in:
69
plugins/figure_tag.rb
Normal file
69
plugins/figure_tag.rb
Normal file
@ -0,0 +1,69 @@
|
||||
# Title: Simple Image Figure tag for Jekyll
|
||||
# Author: Brandon Mathis http://brandonmathis.com
|
||||
# Description: Easily output images in <figure> with an optional <figcaption> and class names.
|
||||
#
|
||||
# Syntax {% figure [class name(s)] url [caption text] %}
|
||||
#
|
||||
# Example:
|
||||
# {% figure left half http://site.com/images/ninja.png Ninja Attack! %}
|
||||
#
|
||||
# Output:
|
||||
# <figure class='left half'><img src="http://site.com/images/ninja.png"><figcaption>Ninja Attack!</figcaption></figure>
|
||||
#
|
||||
# Example 2 (image with caption)
|
||||
# {% figure /images/ninja.png Ninja Attack! %}
|
||||
#
|
||||
# Output:
|
||||
# <figure><img src="/images/ninja.png"><figcaption>Ninja Attack!</figcaption></figure>
|
||||
#
|
||||
# Example 3 (just an image with classes)
|
||||
# {% figure right /images/ninja.png %}
|
||||
#
|
||||
# Output:
|
||||
# <figure><img class="right" src="/images/ninja.png"></figure>
|
||||
#
|
||||
|
||||
module Jekyll
|
||||
|
||||
class FigureImageTag < Liquid::Tag
|
||||
ClassImgCaption = /(\S[\S\s]*)\s+(https?:\/\/|\/)(\S+)\s+(.+)/i
|
||||
ClassImg = /(\S[\S\s]*)\s+(https?:\/\/|\/)(\S+)/i
|
||||
ImgCaption = /^\s*(https?:\/\/|\/)(\S+)\s+(.+)/i
|
||||
Img = /^\s*(https?:\/\/|\/)(\S+\s)/i
|
||||
|
||||
@img = nil
|
||||
@caption = nil
|
||||
@class = ''
|
||||
|
||||
def initialize(tag_name, markup, tokens)
|
||||
if markup =~ ClassImgCaption
|
||||
@class = $1
|
||||
@img = $2 + $3
|
||||
@caption = $4
|
||||
elsif markup =~ ClassImg
|
||||
@class = $1
|
||||
@img = $2 + $3
|
||||
elsif markup =~ ImgCaption
|
||||
@img = $1 + $2
|
||||
@caption = $3
|
||||
elsif markup =~ Img
|
||||
@img = $1 + $2
|
||||
end
|
||||
super
|
||||
end
|
||||
|
||||
def render(context)
|
||||
output = super
|
||||
if @img
|
||||
figure = "<figure class='#{@class}'>"
|
||||
figure += "<img src='#{@img}'>"
|
||||
figure += "<figcaption>#{@caption}</figcaption>" if @caption
|
||||
figure += "</figure>"
|
||||
else
|
||||
"Error processing input, expected syntax: {% figure [class name(s)] /url/to/image [caption] %}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Liquid::Template.register_tag('figure', Jekyll::FigureImageTag)
|
||||
Reference in New Issue
Block a user