修正 Octopress 列表下的 backtick 代码块显示

/

用了一段时间 Octopress 之后,就会发现 Octopress 列表下的 backtick 代码块显示是异常的,下面是对 plugins/backtick_code_block.rb 的修正:

@@ -9,9 +9,13 @@ module BacktickCodeBlock
     @lang = nil
     @url = nil
     @title = nil
-    input.gsub(/^`{3} *([^\n]+)?\n(.+?)\n`{3}/m) do
-  ''
-      str = $2
+    # input.gsub(/^`{3} *([^\n]+)?\n(.+?)\n`{3}/m) do
+    #   @options = $1 || ''
+    #   str = $2
+    input.gsub(/^([ \t]*)`{3} *([^\n]+)?\n(.+?)\n[ \t]*`{3}/m) do
+      indent = $1
+      @options = $2 || ''
+      str = $3
 
       if @options =~ AllOptions
         @lang = $1
@@ -21,12 +25,16 @@ module BacktickCodeBlock
         @caption = "<figcaption><span>#{$2}</span></figcaption>"
       end
 
+      unless indent.empty?
+        str = str.gsub(/^#{indent}/, '')
+      end
       if str.match(/\A( {4}|\t)/)
         str = str.gsub(/^( {4}|\t)/, '')
       end
       if @lang.nil? || @lang == 'plain'
         code = HighlightCode::tableize_code(str.gsub('<','&lt;').gsub('>','&gt;'))
-        "<figure class='code'>#{@caption}#{code}</figure>"
+        # "<figure class='code'>#{@caption}#{code}</figure>"
+        "#{indent}<figure class='code'>#{@caption}#{code}</figure>"
       else
         if @lang.include? "-raw"
           raw = "``` #{@options.sub('-raw', '')}\n"
@@ -34,7 +42,8 @@ module BacktickCodeBlock
           raw += "\n```\n"
         else
           code = HighlightCode::highlight(str, @lang)
-          "<figure class='code'>#{@caption}#{code}</figure>"
+          # "<figure class='code'>#{@caption}#{code}</figure>"
+          "#{indent}<figure class='code'>#{@caption}#{code}</figure>"
         end
       end
     end

Comments