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:
Brandon Mathis 2011-07-19 09:06:54 -04:00
parent 873a604e14
commit 17c59fb1d1
15 changed files with 3 additions and 5 deletions

80
plugins/code_block.rb Normal file
View file

@ -0,0 +1,80 @@
# Title: Simple Code Blocks for Jekyll
# Author: Brandon Mathis http://brandonmathis.com
# Description: Write codeblocks with semantic HTML5 <figure> and <figcaption> elements and optional syntax highlighting — all with a simple, intuitive interface.
#
# Syntax: {% codeblock [title] [url] [link text] %}
#
# For syntax highlighting, put a file extension somewhere in the title. examples:
# {% codeblock file.sh %}
# {% codeblock Time to be Awesome! (awesome.rb) %}
#
# Example:
#
# {% codeblock Got pain? painreleif.sh http://site.com/painreleief.sh Download it! %}
# $ rm -rf ~/PAIN
# {% endcodeblock %}
#
# Output:
#
# <figure role=code>
# <figcaption><span>Got pain? painrelief.sh</span> <a href="http://site.com/painrelief.sh">Download it!</a>
# <div class="highlight"><pre><code class="sh">
# -- nicely escaped highlighted code --
# </code></pre></div>
# </figure>
#
# Example 2 (no syntax highlighting):
#
# {% codeblock %}
# <sarcasm>Ooooh, sarcasm... How original!</sarcasm>
# {% endcodeblock %}
#
# <figure role=code>
# <pre><code>&lt;sarcasm> Ooooh, sarcasm... How original!&lt;/sarcasm></code></pre>
# </figure>
#
module Jekyll
class CodeBlock < Liquid::Block
CaptionUrlTitle = /(\S[\S\s]*)\s+(https?:\/\/)(\S+)\s+(.+)/i
CaptionUrl = /(\S[\S\s]*)\s+(https?:\/\/)(\S+)/i
Caption = /(\S[\S\s]*)/
def initialize(tag_name, markup, tokens)
@title = nil
@caption = nil
@highlight = true
if markup =~ CaptionUrlTitle
@file = $1
@caption = "<figcaption><span>#{$1}</span><a href='#{$2 + $3}'>#{$4}</a</figcaption>"
elsif markup =~ CaptionUrl
@file = $1
@caption = "<figcaption><span>#{$1}</span><a href='#{$2 + $3}'>link</a</figcaption>"
elsif markup =~ Caption
@file = $1
@caption = "<figcaption><span>#{$1}</span></figcaption>\n"
end
if @file =~ /\S[\S\s]*\.(\w+)/
@filetype = $1
end
super
end
def render(context)
output = super
code = super.join
source = "<figure role=code>\n"
source += @caption if @caption
if @filetype
source += "{% highlight #{@filetype} %}\n" + code + "\n{% endhighlight %}\n</figure>"
else
source += "<pre><code>" + code.gsub!(/</,'&lt;') + "</code></pre>\n</figure>"
end
partial = Liquid::Template.parse(source)
context.stack do
partial.render(context)
end
end
end
end
Liquid::Template.register_tag('codeblock', Jekyll::CodeBlock)