You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
# 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: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,resources,html,css,result/light/"></iframe>
|
|
#
|
|
# Input: {% jsfiddle ccWP7 js,html,result %}
|
|
# Output: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,html,result/light/"></iframe>
|
|
#
|
|
|
|
module Jekyll
|
|
class JsFiddle < Liquid::Tag
|
|
def initialize(tag_name, markup, tokens)
|
|
if /(?<fiddle>\w+)(?:\s+(?<sequence>[\w,]+))?(?:\s+(?<skin>\w+))?(?:\s+(?<height>\w+))?(?:\s+(?<width>\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
|
|
"<iframe style=\"width: #{@width}; height: #{@height}\" src=\"http://jsfiddle.net/#{@fiddle}/embedded/#{@sequence}/#{@skin}/\"></iframe>"
|
|
else
|
|
"Error processing input, expected syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %}"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
Liquid::Template.register_tag('jsfiddle', Jekyll::JsFiddle)
|
|
|