aboutsummaryrefslogtreecommitdiff
path: root/plugins/backtick_code_block.rb
diff options
context:
space:
mode:
authorBrandon Mathis <brandon@imathis.com>2011-09-07 18:32:57 -0500
committerBrandon Mathis <brandon@imathis.com>2011-09-07 18:34:21 -0500
commit3d2d1a8be49f3d2db16618014d38d5b93ef0c58f (patch)
tree7fd6c0d6ccdbdd0504a8ac494d39f3f91afc048a /plugins/backtick_code_block.rb
parentb25db54f938899b99d360a91e228d8b43838804c (diff)
downloadmy_new_personal_website-3d2d1a8be49f3d2db16618014d38d5b93ef0c58f.tar.xz
my_new_personal_website-3d2d1a8be49f3d2db16618014d38d5b93ef0c58f.zip
1. Vastly improved backtick code blocks and added support for Textile
2. Refactored Octopress filters into Liquid filters and pre/post render filters (using post_filters plugin) 3. Added methods to raw plugin to prevent Markdown and Textile from parsing blocks 4. Updated render partial to invoke the pre_render method of post_filters 5. Moved Rubypants filter out of default.html into Octopress post_render filters 6. Added raw's safe_wrapper method to codeblock and include_code filters
Diffstat (limited to 'plugins/backtick_code_block.rb')
-rw-r--r--plugins/backtick_code_block.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/plugins/backtick_code_block.rb b/plugins/backtick_code_block.rb
new file mode 100644
index 00000000..c7a83435
--- /dev/null
+++ b/plugins/backtick_code_block.rb
@@ -0,0 +1,42 @@
+require './plugins/pygments_code'
+
+module BacktickCodeBlock
+ include HighlightCode
+ AllOptions = /([^\s]+)\s+(.+?)(https?:\/\/\S+)\s*(.+)?/i
+ LangCaption = /([^\s]+)\s*(.+)?/i
+ def render_code_block(input)
+ @caption = nil
+ @lang = nil
+ @url = nil
+ @title = nil
+ input.gsub /^`{3} *([^\n]+)?\n(.+?)\n`{3}/m do
+ options = $1
+ str = $2
+
+ if options =~ AllOptions
+ @lang = $1
+ @caption = "<figcaption><span>#{$2}</span><a href='#{$3}'>#{$4 || 'link'}</a></figcaption>"
+ elsif options =~ LangCaption
+ @lang = $1
+ @caption = "<figcaption><span>#{$2}</span></figcaption>"
+ end
+
+ if str.match(/\A {4}/)
+ str = str.gsub /^ {4}/, ''
+ end
+ if @lang.nil? || @lang == 'plain'
+ code = tableize_code(str.gsub('<','&lt;').gsub('>','&gt;'))
+ "<figure role=code>#{@caption}#{code}</figure>"
+ else
+ if @lang.include? "-raw"
+ raw = "``` #{@lang.sub('-raw', '')}\n"
+ raw += str
+ raw += "\n```\n"
+ else
+ code = highlight(str, @lang)
+ "<figure role=code>#{@caption}#{code}</figure>"
+ end
+ end
+ end
+ end
+end