tweak code markup parser so that blocks without a language are just output in pre tags
This commit is contained in:
@@ -347,7 +347,7 @@ module Gollum
|
|||||||
#
|
#
|
||||||
# Returns the placeholder'd String data.
|
# Returns the placeholder'd String data.
|
||||||
def extract_code(data)
|
def extract_code(data)
|
||||||
data.gsub(/^``` ?(.+?)\r?\n(.+?)\r?\n```\r?$/m) do
|
data.gsub(/^``` ?([^\r\n]+)?\r?\n(.+?)\r?\n```\r?$/m) do
|
||||||
id = Digest::SHA1.hexdigest($2)
|
id = Digest::SHA1.hexdigest($2)
|
||||||
@codemap[id] = { :lang => $1, :code => $2 }
|
@codemap[id] = { :lang => $1, :code => $2 }
|
||||||
id
|
id
|
||||||
@@ -362,12 +362,15 @@ module Gollum
|
|||||||
# Returns the marked up String data.
|
# Returns the marked up String data.
|
||||||
def process_code(data)
|
def process_code(data)
|
||||||
@codemap.each do |id, spec|
|
@codemap.each do |id, spec|
|
||||||
lang = spec[:lang]
|
|
||||||
code = spec[:code]
|
code = spec[:code]
|
||||||
if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
|
if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ }
|
||||||
code.gsub!(/^( |\t)/m, '')
|
code.gsub!(/^( |\t)/m, '')
|
||||||
end
|
end
|
||||||
|
if lang = spec[:lang]
|
||||||
data.gsub!(id, Gollum::Albino.new(code, lang).colorize)
|
data.gsub!(id, Gollum::Albino.new(code, lang).colorize)
|
||||||
|
else
|
||||||
|
data.gsub!(id, "<pre><code>#{CGI.escapeHTML(code)}</code></pre>")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
data
|
data
|
||||||
end
|
end
|
||||||
|
|||||||
+2
-2
@@ -360,8 +360,8 @@ context "Markup" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "code block with no lang" do
|
test "code block with no lang" do
|
||||||
content = "a\n\n```\n\tls -al;\n\tbooya\n```\n\nb"
|
content = "a\n\n```\n\tls -al;\n\t<booya>\n```\n\nb"
|
||||||
output = "<p>a</p>\n\n\n\n<p>b</p>"
|
output = "<p>a</p>\n\n<pre><code>ls -al;\n<booya></code></pre>\n\n<p>b</p>"
|
||||||
compare(content, output)
|
compare(content, output)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user