diff options
author | Brandon Mathis <brandon@imathis.com> | 2011-09-07 18:32:57 -0500 |
---|---|---|
committer | Brandon Mathis <brandon@imathis.com> | 2011-09-07 18:34:21 -0500 |
commit | 3d2d1a8be49f3d2db16618014d38d5b93ef0c58f (patch) | |
tree | 7fd6c0d6ccdbdd0504a8ac494d39f3f91afc048a /plugins/backtick_code_block.rb | |
parent | b25db54f938899b99d360a91e228d8b43838804c (diff) | |
download | my_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.rb | 42 |
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('<','<').gsub('>','>')) + "<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 |