... | ... |
@@ -64,7 +64,7 @@ module Jekyll |
64 | 64 |
@file = $1 |
65 | 65 |
@caption = "<figcaption><span>#{$1}</span></figcaption>\n" |
66 | 66 |
end |
67 |
- if @file =~ /\S[\S\s]*\.(\w+)/ |
|
67 |
+ if @file =~ /\S[\S\s]*\w+\.(\w+)/ |
|
68 | 68 |
@filetype = $1 |
69 | 69 |
end |
70 | 70 |
super |
... | ... |
@@ -82,7 +82,7 @@ module Jekyll |
82 | 82 |
@filetype = 'yaml' if @filetype == 'yml' |
83 | 83 |
source += " #{highlight(code, @filetype)}</figure></div>" |
84 | 84 |
else |
85 |
- source += "<pre><code>" + code.lstrip.rstrip.gsub(/</,'<') + "</code></pre></figure></div>" |
|
85 |
+ source += "#{tableize_code(code.lstrip.rstrip.gsub(/</,'<'))}</figure></div>" |
|
86 | 86 |
end |
87 | 87 |
source = source + context['pygments_suffix'] if context['pygments_suffix'] |
88 | 88 |
end |
... | ... |
@@ -26,14 +26,17 @@ module OctopressFilters |
26 | 26 |
# code snippet |
27 | 27 |
# ``` |
28 | 28 |
def backtick_codeblock(input) |
29 |
+ code = nil |
|
29 | 30 |
# Markdown support |
30 | 31 |
input = input.gsub /<p>`{3}\s*(\w+)?<\/p>\s*<pre><code>\s*(.+?)\s*<\/code><\/pre>\s*<p>`{3}<\/p>/m do |
31 | 32 |
lang = $1 |
32 | 33 |
if lang != '' |
33 | 34 |
str = $2.gsub('<','<').gsub('>','>').gsub('&','&') |
34 |
- highlight(str, lang) |
|
35 |
+ code = highlight(str, lang) |
|
36 |
+ "<figure role=code>#{code}</figure>" |
|
35 | 37 |
else |
36 |
- "<pre><code>#{$2}</code></pre>" |
|
38 |
+ code = tableize_code($2) |
|
39 |
+ "<figure role=code>#{code}</figure>" |
|
37 | 40 |
end |
38 | 41 |
end |
39 | 42 |
|
... | ... |
@@ -48,9 +51,11 @@ module OctopressFilters |
48 | 48 |
lang = $1 |
49 | 49 |
str = $2.gsub(/^\s{4}/, '') |
50 | 50 |
if lang != '' |
51 |
- highlight(str, lang) |
|
51 |
+ code = highlight(str, lang) |
|
52 |
+ "<figure role=code>#{code}</figure>" |
|
52 | 53 |
else |
53 |
- "<pre><code>#{$2.gsub('<','<').gsub('>','>')}</code></pre>" |
|
54 |
+ code = tableize_code($2.gsub('<','<').gsub('>','>')) |
|
55 |
+ "<figure role=code>#{code}</figure>" |
|
54 | 56 |
end |
55 | 57 |
end |
56 | 58 |
end |
... | ... |
@@ -8,13 +8,7 @@ FileUtils.mkdir_p(PYGMENTS_CACHE_DIR) |
8 | 8 |
module HighlightCode |
9 | 9 |
def highlight(str, lang) |
10 | 10 |
str = pygments(str, lang).match(/<pre>(.+)<\/pre>/m)[1].to_s.gsub(/ *$/, '') #strip out divs <div class="highlight"> |
11 |
- table = '<div class="highlight"><table cellpadding="0" cellspacing="0"><tr><td class="gutter"><pre class="line-numbers">' |
|
12 |
- code = '' |
|
13 |
- str.lines.each_with_index do |line,index| |
|
14 |
- table += "<span class='line'>#{index+1}</span>\n" |
|
15 |
- code += "<div class='line'>#{line}</div>" |
|
16 |
- end |
|
17 |
- table += "</pre></td><td class='code' width='100%'><pre><code class='#{lang}'>#{code}</code></pre></td></tr></table></div>" |
|
11 |
+ tableize_code(str, lang) |
|
18 | 12 |
end |
19 | 13 |
|
20 | 14 |
def pygments(code, lang) |
... | ... |
@@ -31,4 +25,13 @@ module HighlightCode |
31 | 31 |
end |
32 | 32 |
highlighted_code |
33 | 33 |
end |
34 |
+ def tableize_code (str, lang = '') |
|
35 |
+ table = '<div class="highlight"><table cellpadding="0" cellspacing="0"><tr><td class="gutter"><pre class="line-numbers">' |
|
36 |
+ code = '' |
|
37 |
+ str.lines.each_with_index do |line,index| |
|
38 |
+ table += "<span class='line'>#{index+1}</span>\n" |
|
39 |
+ code += "<div class='line'>#{line}</div>" |
|
40 |
+ end |
|
41 |
+ table += "</pre></td><td class='code' width='100%'><pre><code class='#{lang}'>#{code}</code></pre></td></tr></table></div>" |
|
42 |
+ end |
|
34 | 43 |
end |