update albino to 1.2.3, handle bad code blocks gracefully
This commit is contained in:
+1
-1
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|||||||
|
|
||||||
s.add_dependency('grit', "~> 2.3")
|
s.add_dependency('grit', "~> 2.3")
|
||||||
s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
|
s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
|
||||||
s.add_dependency('albino', "~> 1.0")
|
s.add_dependency('albino', "~> 1.2.3")
|
||||||
s.add_dependency('sinatra', "~> 1.0")
|
s.add_dependency('sinatra', "~> 1.0")
|
||||||
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
|
s.add_dependency('mustache', [">= 0.11.2", "< 1.0.0"])
|
||||||
s.add_dependency('sanitize', "~> 1.1")
|
s.add_dependency('sanitize', "~> 1.1")
|
||||||
|
|||||||
+2
-20
@@ -1,30 +1,12 @@
|
|||||||
require 'albino'
|
require 'albino'
|
||||||
|
|
||||||
class Gollum::Albino < Albino
|
class Gollum::Albino < Albino
|
||||||
def self.bin
|
self.bin = ::Albino.bin
|
||||||
Albino.bin
|
self.default_encoding = ::Albino.default_encoding
|
||||||
end
|
|
||||||
|
|
||||||
def bin
|
|
||||||
Albino.bin
|
|
||||||
end
|
|
||||||
|
|
||||||
def colorize(options = {})
|
def colorize(options = {})
|
||||||
html = super.to_s
|
html = super.to_s
|
||||||
html.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
html.sub!(%r{</pre></div>\Z}, "</pre>\n</div>")
|
||||||
html
|
html
|
||||||
end
|
end
|
||||||
|
|
||||||
# Hotfix for vulnerable versions of Albino
|
|
||||||
if !instance_methods.include?('shell_escape')
|
|
||||||
def convert_options(options = {})
|
|
||||||
@options.merge(options).inject('') do |string, (flag, value)|
|
|
||||||
string + " -#{flag} #{shell_escape value}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def shell_escape(str)
|
|
||||||
str.to_s.gsub("'", "\\\\'").gsub(";", '\\;')
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
@@ -380,14 +380,18 @@ module Gollum
|
|||||||
@codemap.each do |id, spec|
|
@codemap.each do |id, spec|
|
||||||
formatted = spec[:output] || begin
|
formatted = spec[:output] || begin
|
||||||
code = spec[:code]
|
code = spec[:code]
|
||||||
|
lang = spec[:lang]
|
||||||
|
|
||||||
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
|
||||||
formatted = if lang = spec[:lang]
|
|
||||||
Gollum::Albino.new(code, lang).colorize
|
formatted = begin
|
||||||
else
|
lang && Gollum::Albino.colorize(code, lang)
|
||||||
"<pre><code>#{CGI.escapeHTML(code)}</code></pre>"
|
rescue ::Albino::ShellArgumentError, ::Albino::Process::TimeoutExceeded,
|
||||||
|
::Albino::Process::MaximumOutputExceeded
|
||||||
end
|
end
|
||||||
|
formatted ||= "<pre><code>#{CGI.escapeHTML(code)}</code></pre>"
|
||||||
update_cache(:code, id, formatted)
|
update_cache(:code, id, formatted)
|
||||||
formatted
|
formatted
|
||||||
end
|
end
|
||||||
|
|||||||
+5
-5
@@ -343,7 +343,7 @@ context "Markup" do
|
|||||||
content = "a\n\n```ruby\nx = 1\n```\n\nb"
|
content = "a\n\n```ruby\nx = 1\n```\n\nb"
|
||||||
output = "<p>a</p>\n\n<div class=\"highlight\"><pre>" +
|
output = "<p>a</p>\n\n<div class=\"highlight\"><pre>" +
|
||||||
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
||||||
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n<p>b</p>"
|
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||||
|
|
||||||
index = @wiki.repo.index
|
index = @wiki.repo.index
|
||||||
index.add("Bilbo-Baggins.md", content)
|
index.add("Bilbo-Baggins.md", content)
|
||||||
@@ -358,7 +358,7 @@ context "Markup" do
|
|||||||
content = "a\r\n\r\n```ruby\r\nx = 1\r\n```\r\n\r\nb"
|
content = "a\r\n\r\n```ruby\r\nx = 1\r\n```\r\n\r\nb"
|
||||||
output = "<p>a</p>\n\n<div class=\"highlight\"><pre>" +
|
output = "<p>a</p>\n\n<div class=\"highlight\"><pre>" +
|
||||||
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
||||||
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n<p>b</p>"
|
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||||
|
|
||||||
index = @wiki.repo.index
|
index = @wiki.repo.index
|
||||||
index.add("Bilbo-Baggins.md", content)
|
index.add("Bilbo-Baggins.md", content)
|
||||||
@@ -374,7 +374,7 @@ context "Markup" do
|
|||||||
output = "<p>a</p>\n\n<div class=\"highlight\"><pre><span class=\"n\">" +
|
output = "<p>a</p>\n\n<div class=\"highlight\"><pre><span class=\"n\">" +
|
||||||
"x</span> <span class=\"o\">=</span> <span class=\"mi\">1" +
|
"x</span> <span class=\"o\">=</span> <span class=\"mi\">1" +
|
||||||
"</span>\n\n<span class=\"n\">y</span> <span class=\"o\">=" +
|
"</span>\n\n<span class=\"n\">y</span> <span class=\"o\">=" +
|
||||||
"</span> <span class=\"mi\">2</span>\n</pre>\n</div>\n\n<p>b</p>"
|
"</span> <span class=\"mi\">2</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||||
compare(content, output)
|
compare(content, output)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -383,13 +383,13 @@ context "Markup" do
|
|||||||
output = "<p>a</p>\n\n<div class=\"highlight\"><pre><span class=\"n\">" +
|
output = "<p>a</p>\n\n<div class=\"highlight\"><pre><span class=\"n\">" +
|
||||||
"x</span> <span class=\"o\">=</span> <span class=\"mi\">1" +
|
"x</span> <span class=\"o\">=</span> <span class=\"mi\">1" +
|
||||||
"</span>\n\n<span class=\"n\">y</span> <span class=\"o\">=" +
|
"</span>\n\n<span class=\"n\">y</span> <span class=\"o\">=" +
|
||||||
"</span> <span class=\"mi\">2</span>\n</pre>\n</div>\n\n<p>b</p>"
|
"</span> <span class=\"mi\">2</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||||
compare(content, output)
|
compare(content, output)
|
||||||
end
|
end
|
||||||
|
|
||||||
test "code block with invalid lang" do
|
test "code block with invalid lang" do
|
||||||
content = "a\n\n``` ls -al;\n\tbooya\n\tboom\n```\n\nb"
|
content = "a\n\n``` ls -al;\n\tbooya\n\tboom\n```\n\nb"
|
||||||
output = "<p>a</p>\n\n\n\n<p>b</p>"
|
output = "<p>a</p>\n\n<pre><code>booya\nboom</code></pre>\n\n<p>b</p>"
|
||||||
compare(content, output)
|
compare(content, output)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user