# Title: jsFiddle tag for Jekyll
# Author: Brian Arnold (@brianarn)
# Description:
# Given a jsFiddle shortcode, outputs the jsFiddle iframe code.
# Using 'default' will preserve defaults as specified by jsFiddle.
#
# Syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %}
#
# Examples:
#
# Input: {% jsfiddle ccWP7 %}
# Output:
#
# Input: {% jsfiddle ccWP7 js,html,result %}
# Output:
#
module Jekyll
class JsFiddle < Liquid::Tag
def initialize(tag_name, markup, tokens)
if /(?\w+)(?:\s+(?[\w,\/]+))?(?:\s+(?\w+))?(?:\s+(?\w+))?(?:\s+(?\w+))?/ =~ markup
@fiddle = fiddle
@sequence = (sequence unless sequence == 'default') || 'js,resources,html,css,result'
@skin = (skin unless skin == 'default') || 'light'
@width = width || '100%'
@height = height || '300px'
end
end
def render(context)
if @fiddle
""
else
"Error processing input, expected syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %}"
end
end
end
end
Liquid::Template.register_tag('jsfiddle', Jekyll::JsFiddle)