diff --git a/lib/gollum/markup.rb b/lib/gollum/markup.rb index 2a78bbbf..ac9fe921 100644 --- a/lib/gollum/markup.rb +++ b/lib/gollum/markup.rb @@ -347,7 +347,7 @@ module Gollum # # Returns the placeholder'd String 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) @codemap[id] = { :lang => $1, :code => $2 } id @@ -362,12 +362,15 @@ module Gollum # Returns the marked up String data. def process_code(data) @codemap.each do |id, spec| - lang = spec[:lang] code = spec[:code] if code.lines.all? { |line| line =~ /\A\r?\n\Z/ || line =~ /^( |\t)/ } code.gsub!(/^( |\t)/m, '') end - data.gsub!(id, Gollum::Albino.new(code, lang).colorize) + if lang = spec[:lang] + data.gsub!(id, Gollum::Albino.new(code, lang).colorize) + else + data.gsub!(id, "
#{CGI.escapeHTML(code)}")
+ end
end
data
end
diff --git a/test/test_markup.rb b/test/test_markup.rb
index 3b9ecb91..6dec20be 100644
--- a/test/test_markup.rb
+++ b/test/test_markup.rb
@@ -360,8 +360,8 @@ context "Markup" do
end
test "code block with no lang" do
- content = "a\n\n```\n\tls -al;\n\tbooya\n```\n\nb"
- output = "a
\n\n\n\nb
" + content = "a\n\n```\n\tls -al;\n\ta
\n\nls -al;\n<booya>\n\nb
" compare(content, output) end