From 2dbb4e9fa7d5b1f8175249a2f51c028332de1f4f Mon Sep 17 00:00:00 2001
From: Douglas Campos
Date: Tue, 11 Jan 2011 23:57:22 -0200
Subject: [PATCH] fixed mediawiki link handling
---
lib/gollum/markup.rb | 37 +++++++++++++++++++++----------------
test/test_markup.rb | 7 +++++++
2 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/lib/gollum/markup.rb b/lib/gollum/markup.rb
index 7a521ed8..236c0fc2 100644
--- a/lib/gollum/markup.rb
+++ b/lib/gollum/markup.rb
@@ -13,6 +13,7 @@ module Gollum
@name = page.filename
@data = page.text_data
@version = page.version.id
+ @format = page.format
@dir = ::File.dirname(page.path)
@tagmap = {}
@codemap = {}
@@ -294,22 +295,26 @@ module Gollum
# Returns the String HTML if the tag is a valid page link tag or nil
# if it is not.
def process_page_link_tag(tag, no_follow = false)
- parts = tag.split('|')
- name = parts[0].strip
- cname = @wiki.page_class.cname((parts[1] || parts[0]).strip)
- tag = if name =~ %r{^https?://} && parts[1].nil?
- %{#{name}}
- else
- presence = "absent"
- link_name = cname
- page, extra = find_page_from_name(cname)
- if page
- link_name = @wiki.page_class.cname(page.name)
- presence = "present"
- end
- link = ::File.join(@wiki.base_path, CGI.escape(link_name))
- %{#{name}}
- end
+ parts = if @format == :mediawiki
+ tag.split('|').reverse
+ else
+ tag.split('|')
+ end
+ name, page_name = *parts.compact.map(&:strip)
+ cname = @wiki.page_class.cname(page_name || name)
+ tag = if name =~ %r{^https?://} && page_name.nil?
+ %{#{name}}
+ else
+ presence = "absent"
+ link_name = cname
+ page, extra = find_page_from_name(cname)
+ if page
+ link_name = @wiki.page_class.cname(page.name)
+ presence = "present"
+ end
+ link = ::File.join(@wiki.base_path, CGI.escape(link_name))
+ %{#{name}}
+ end
if tag && no_follow
tag.sub! /^a Potato Heaad
", output
end
+ test "page link with different text on mediawiki" do
+ @wiki.write_page("Potato", :mediawiki, "a [[Potato|Potato Heaad]] ", commit_details)
+ page = @wiki.page("Potato")
+ output = page.formatted_data
+ assert_equal "\na Potato Heaad \n
", output
+ end
+
#########################################################################
#
# Images