Merge remote-tracking branch 'origin/master' into xdite-merge
Conflicts: lib/gollum/markup.rb
This commit is contained in:
+1
-2
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
||||
s.extra_rdoc_files = %w[README.md LICENSE]
|
||||
|
||||
s.add_dependency('grit', "~> 2.4.1")
|
||||
s.add_dependency('github-markup', [">= 0.4.0", "< 1.0.0"])
|
||||
s.add_dependency('github-markup', [">= 0.7.0", "< 1.0.0"])
|
||||
s.add_dependency('pygments.rb', "~> 0.2.0")
|
||||
s.add_dependency('posix-spawn', "~> 0.3.0")
|
||||
s.add_dependency('sinatra', "~> 1.0")
|
||||
@@ -35,7 +35,6 @@ Gem::Specification.new do |s|
|
||||
s.add_development_dependency('RedCloth')
|
||||
s.add_development_dependency('mocha')
|
||||
s.add_development_dependency('org-ruby')
|
||||
s.add_development_dependency('rdiscount')
|
||||
s.add_development_dependency('shoulda')
|
||||
s.add_development_dependency('rack-test')
|
||||
s.add_development_dependency('wikicloth', '~> 0.6.3')
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</td>
|
||||
<td class="author">
|
||||
<a href="javascript:void(0)">
|
||||
<img src="http://www.gravatar.com/avatar/{{gravatar}}?s=16"
|
||||
<img src="https://secure.gravatar.com/avatar/{{gravatar}}?s=16"
|
||||
alt="avatar: {{author}}" class="mini-gravatar">
|
||||
<span class="username">{{author}}</span>
|
||||
</a>
|
||||
|
||||
@@ -53,17 +53,13 @@ module Gollum
|
||||
doc = Nokogiri::HTML::DocumentFragment.parse(data)
|
||||
doc = sanitize.clean_node!(doc) if sanitize
|
||||
yield doc if block_given?
|
||||
data = doc_to_html(doc)
|
||||
data = doc.to_html
|
||||
end
|
||||
data = process_tex(data)
|
||||
data.gsub!(/<p><\/p>/, '')
|
||||
data
|
||||
end
|
||||
|
||||
def doc_to_html(doc)
|
||||
doc.to_xhtml(:save_with => Nokogiri::XML::Node::SaveOptions::AS_XHTML)
|
||||
end
|
||||
|
||||
#########################################################################
|
||||
#
|
||||
# TeX
|
||||
|
||||
@@ -43,7 +43,7 @@ module Gollum
|
||||
|
||||
# Default whitelisted protocols for URLs.
|
||||
PROTOCOLS = {
|
||||
'a' => {'href' => ['http', 'https', 'mailto', :relative]},
|
||||
'a' => {'href' => ['http', 'https', 'mailto', 'ftp', 'irc', :relative]},
|
||||
'img' => {'src' => ['http', 'https', :relative]}
|
||||
}.freeze
|
||||
|
||||
|
||||
+7
-9
@@ -54,32 +54,30 @@ module Gollum
|
||||
# Gets the markup class used by all instances of this Wiki.
|
||||
# Default: Gollum::Markup
|
||||
def markup_classes
|
||||
@markup_classes ||
|
||||
@markup_classes ||=
|
||||
if superclass.respond_to?(:markup_classes)
|
||||
superclass.markup_classes
|
||||
else
|
||||
classes = Hash.new(::Gollum::Markup)
|
||||
|
||||
# Add custom markup classes for different languages
|
||||
classes[:markdown] = ::Gollum::MarkupGFM
|
||||
classes
|
||||
Hash.new(::Gollum::Markup)
|
||||
end
|
||||
end
|
||||
|
||||
# Gets the default markup class used by all instances of this Wiki.
|
||||
# Kept for backwards compatibility until Gollum v2.x
|
||||
def markup_class
|
||||
markup_classes[:default]
|
||||
def markup_class(language=:default)
|
||||
markup_classes[language]
|
||||
end
|
||||
|
||||
# Sets the default markup class used by all instances of this Wiki.
|
||||
# Kept for backwards compatibility until Gollum v2.x
|
||||
def markup_class=(default)
|
||||
new_classes = Hash.new default
|
||||
@markup_classes = Hash.new(default).update(markup_classes)
|
||||
default
|
||||
end
|
||||
|
||||
alias_method :default_markup_class, :markup_class
|
||||
alias_method :default_markup_class=, :markup_class=
|
||||
|
||||
# Gets the default sanitization options for current pages used by
|
||||
# instances of this Wiki.
|
||||
def sanitization
|
||||
|
||||
+19
-19
@@ -189,7 +189,7 @@ context "Markup" do
|
||||
|
||||
page = @wiki.page(name)
|
||||
output = page.formatted_data
|
||||
assert_equal %{<p>a <img src="#{scheme}://example.com/bilbo.jpg" /> b</p>}, output
|
||||
assert_equal %{<p>a <img src="#{scheme}://example.com/bilbo.jpg"> b</p>}, output
|
||||
end
|
||||
end
|
||||
|
||||
@@ -200,7 +200,7 @@ context "Markup" do
|
||||
|
||||
page = @wiki.page(name)
|
||||
output = page.formatted_data
|
||||
assert_equal %{<p>a <img src="#{scheme}://example.com/bilbo.JPG" /> b</p>}, output
|
||||
assert_equal %{<p>a <img src="#{scheme}://example.com/bilbo.JPG"> b</p>}, output
|
||||
end
|
||||
end
|
||||
|
||||
@@ -212,7 +212,7 @@ context "Markup" do
|
||||
@wiki.write_page("Bilbo Baggins", :markdown, "a [[/alpha.jpg]] [[a | /alpha.jpg]] b", commit_details)
|
||||
|
||||
page = @wiki.page("Bilbo Baggins")
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg" /><a href="/wiki/alpha.jpg">a</a> b</p>}, page.formatted_data
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg"><a href="/wiki/alpha.jpg">a</a> b</p>}, page.formatted_data
|
||||
end
|
||||
|
||||
test "image with relative path on root" do
|
||||
@@ -223,7 +223,7 @@ context "Markup" do
|
||||
index.commit("Add alpha.jpg")
|
||||
|
||||
page = @wiki.page("Bilbo Baggins")
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg" /><a href="/wiki/alpha.jpg">a</a> b</p>}, page.formatted_data
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg"><a href="/wiki/alpha.jpg">a</a> b</p>}, page.formatted_data
|
||||
end
|
||||
|
||||
test "image with relative path" do
|
||||
@@ -235,7 +235,7 @@ context "Markup" do
|
||||
|
||||
page = @wiki.page("Bilbo Baggins")
|
||||
output = page.formatted_data
|
||||
assert_equal %{<p>a <img src="/wiki/greek/alpha.jpg" /><a href="/wiki/greek/alpha.jpg">a</a> b</p>}, output
|
||||
assert_equal %{<p>a <img src="/wiki/greek/alpha.jpg"><a href="/wiki/greek/alpha.jpg">a</a> b</p>}, output
|
||||
end
|
||||
|
||||
test "image with absolute path on a preview" do
|
||||
@@ -245,7 +245,7 @@ context "Markup" do
|
||||
index.commit("Add alpha.jpg")
|
||||
|
||||
page = @wiki.preview_page("Test", "a [[/alpha.jpg]] b", :markdown)
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg" /> b</p>}, page.formatted_data
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg"> b</p>}, page.formatted_data
|
||||
end
|
||||
|
||||
test "image with relative path on a preview" do
|
||||
@@ -256,12 +256,12 @@ context "Markup" do
|
||||
index.commit("Add alpha.jpg")
|
||||
|
||||
page = @wiki.preview_page("Test", "a [[alpha.jpg]] [[greek/alpha.jpg]] b", :markdown)
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg" /><img src="/wiki/greek/alpha.jpg" /> b</p>}, page.formatted_data
|
||||
assert_equal %{<p>a <img src="/wiki/alpha.jpg"><img src="/wiki/greek/alpha.jpg"> b</p>}, page.formatted_data
|
||||
end
|
||||
|
||||
test "image with alt" do
|
||||
content = "a [[alpha.jpg|alt=Alpha Dog]] b"
|
||||
output = %{<p>a <img src="/greek/alpha.jpg" alt="Alpha Dog" /> b</p>}
|
||||
output = %{<p>a <img src="/greek/alpha.jpg" alt="Alpha Dog"> b</p>}
|
||||
relative_image(content, output)
|
||||
end
|
||||
|
||||
@@ -269,7 +269,7 @@ context "Markup" do
|
||||
%w{em px}.each do |unit|
|
||||
%w{width height}.each do |dim|
|
||||
content = "a [[alpha.jpg|#{dim}=100#{unit}]] b"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\" #{dim}=\"100#{unit}\" /> b</p>"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\" #{dim}=\"100#{unit}\"> b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
end
|
||||
@@ -278,7 +278,7 @@ context "Markup" do
|
||||
test "image with bogus dimension" do
|
||||
%w{width height}.each do |dim|
|
||||
content = "a [[alpha.jpg|#{dim}=100]] b"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\" /> b</p>"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\"> b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
end
|
||||
@@ -286,7 +286,7 @@ context "Markup" do
|
||||
test "image with vertical align" do
|
||||
%w{top texttop middle absmiddle bottom absbottom baseline}.each do |align|
|
||||
content = "a [[alpha.jpg|align=#{align}]] b"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\" align=\"#{align}\" /> b</p>"
|
||||
output = "<p>a <img src=\"/greek/alpha.jpg\" align=\"#{align}\"> b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
end
|
||||
@@ -294,40 +294,40 @@ context "Markup" do
|
||||
test "image with horizontal align" do
|
||||
%w{left center right}.each do |align|
|
||||
content = "a [[alpha.jpg|align=#{align}]] b"
|
||||
output = "<p>a <span class=\"align-#{align}\"><span><img src=\"/greek/alpha.jpg\" /></span></span> b</p>"
|
||||
output = "<p>a <span class=\"align-#{align}\"><span><img src=\"/greek/alpha.jpg\"></span></span> b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
end
|
||||
|
||||
test "image with float" do
|
||||
content = "a\n\n[[alpha.jpg|float]]\n\nb"
|
||||
output = "<p>a</p>\n\n<p><span class=\"float-left\"><span><img src=\"/greek/alpha.jpg\" /></span></span></p>\n\n<p>b</p>"
|
||||
output = "<p>a</p>\n\n<p><span class=\"float-left\"><span><img src=\"/greek/alpha.jpg\"></span></span></p>\n\n<p>b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
|
||||
test "image with float and align" do
|
||||
%w{left right}.each do |align|
|
||||
content = "a\n\n[[alpha.jpg|float|align=#{align}]]\n\nb"
|
||||
output = "<p>a</p>\n\n<p><span class=\"float-#{align}\"><span><img src=\"/greek/alpha.jpg\" /></span></span></p>\n\n<p>b</p>"
|
||||
output = "<p>a</p>\n\n<p><span class=\"float-#{align}\"><span><img src=\"/greek/alpha.jpg\"></span></span></p>\n\n<p>b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
end
|
||||
|
||||
test "image with frame" do
|
||||
content = "a\n\n[[alpha.jpg|frame]]\n\nb"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"/greek/alpha.jpg\" /></span></span></p>\n\n<p>b</p>"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"/greek/alpha.jpg\"></span></span></p>\n\n<p>b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
|
||||
test "absolute image with frame" do
|
||||
content = "a\n\n[[http://example.com/bilbo.jpg|frame]]\n\nb"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"http://example.com/bilbo.jpg\" /></span></span></p>\n\n<p>b</p>"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"http://example.com/bilbo.jpg\"></span></span></p>\n\n<p>b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
|
||||
test "image with frame and alt" do
|
||||
content = "a\n\n[[alpha.jpg|frame|alt=Alpha]]\n\nb"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"/greek/alpha.jpg\" alt=\"Alpha\" /><span>Alpha</span></span></span></p>\n\n<p>b</p>"
|
||||
output = "<p>a</p>\n\n<p><span class=\"frame\"><span><img src=\"/greek/alpha.jpg\" alt=\"Alpha\"><span>Alpha</span></span></span></p>\n\n<p>b</p>"
|
||||
relative_image(content, output)
|
||||
end
|
||||
|
||||
@@ -376,7 +376,7 @@ context "Markup" do
|
||||
|
||||
test "code blocks" do
|
||||
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\">\n<pre>" +
|
||||
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
||||
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||
|
||||
@@ -391,7 +391,7 @@ context "Markup" do
|
||||
|
||||
test "code blocks with carriage returns" do
|
||||
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\">\n<pre>" +
|
||||
"<span class=\"n\">x</span> <span class=\"o\">=</span> " +
|
||||
"<span class=\"mi\">1</span>\n</pre>\n</div>\n\n\n<p>b</p>"
|
||||
|
||||
|
||||
+8
-4
@@ -11,13 +11,17 @@ context "Wiki" do
|
||||
assert_equal Gollum::Markup, Gollum::Wiki.markup_class
|
||||
end
|
||||
|
||||
test "#markup_class= doesn't clobber alternate markups" do
|
||||
test "#default_markup_class= doesn't clobber alternate markups" do
|
||||
custom = Class.new(Gollum::Markup)
|
||||
Gollum::Wiki.markup_class = custom
|
||||
custom_md = Class.new(Gollum::Markup)
|
||||
|
||||
assert_equal custom, Gollum::Wiki.markup_class
|
||||
Gollum::Wiki.markup_classes = Hash.new Gollum::Markup
|
||||
Gollum::Wiki.markup_classes[:markdown] = custom_md
|
||||
Gollum::Wiki.default_markup_class = custom
|
||||
|
||||
assert_equal custom, Gollum::Wiki.default_markup_class
|
||||
assert_equal custom, Gollum::Wiki.markup_classes[:orgmode]
|
||||
assert_equal Gollum::MarkupGFM, Gollum::Wiki.markup_classes[:markdown]
|
||||
assert_equal custom_md, Gollum::Wiki.markup_classes[:markdown]
|
||||
end
|
||||
|
||||
test "repo path" do
|
||||
|
||||
Reference in New Issue
Block a user