Changed wiki parser to wikicloth.

* Temporarly removing of TOC.
This commit is contained in:
Benjamin Meichsner 2009-08-11 14:30:35 +02:00
parent 55729e20f9
commit 5d9385cde4
39 changed files with 3474 additions and 64 deletions

View file

@ -1,51 +1,34 @@
module PagesHelper
include WikiCloth
def wiki_link(wiki_words, link_text = nil)
permalink = Page.permalink(wiki_words)
if Page.exists?(:permalink => permalink)
link_to((link_text || wiki_words), wiki_page_url(permalink))
else
link_to((link_text || wiki_words), wiki_page_url(permalink), :class => "new_wiki_link")
end
end
def build_internal_links(body)
body.gsub(/\[\[(.*?)(\|(.*?))?\]\]/) { wiki_link($1, $3) }
end
def build_anchors(body)
body.gsub(/(<h\d{1}>(.+)<\/h\d{1}>)/) do
header = $1
token = $2.downcase.gsub(' ', '-')
"<a name='#{token}'> </a>#{header}"
end
end
# def build_anchors(body)
# body.gsub(/(<h\d{1}>(.+)<\/h\d{1}>)/) do
# header = $1
# token = $2.downcase.gsub(' ', '-')
# "<a name='#{token}'> </a>#{header}"
# end
# end
def wikified_body(body)
body = Wikitext::Parser.new.parse body
build_anchors(body)
end
def wiki_header(body)
body.gsub(/^(={1,6})\s*(.*)\s*={1,6}$/) { "h#{$1.size}. #{$2}" }
WikiCloth.new({:data => body, :link_handler => Wikilink.new}).to_html
end
def generate_toc(body)
toc = ""
body.gsub(/<h(\d{1})>(.+)<\/h\d{1}>/) do
number = $1.to_i - 1
name = $2
toc << "#" * number + " #{name}\n"
end
toc = Wikitext::Parser.new.parse toc
toc.gsub(/<li>([^<>\n]*)/) do
name = $1
token = name.downcase.gsub(' ', '-')
"<li><a href='##{token}'>#{name}</a>"
end
end
# def generate_toc(body)
# toc = ""
# body.gsub(/^([=]{1,6})\s*(.*?)\s*(\1)/) do
# number = $1.length - 1
# name = $2
#
# toc << "#" * number + " #{name}\n"
# end
# toc = WikiCloth.new({:data => toc, :link_handler => Wikilink.new}).to_html
#
# toc.gsub(/<li>([^<>\n]*)/) do
# name = $1
# token = name.downcase.gsub(' ', '-')
#
# "<li><a href='##{token}'>#{name}</a>"
# end
# end
end