dtext changes

This commit is contained in:
albert
2011-10-24 11:10:20 -04:00
parent f2f524b87f
commit d2177512ea
2 changed files with 16 additions and 26 deletions

View File

@@ -17,7 +17,18 @@ class DText
str.gsub!(/\n/m, "<br>")
str.gsub!(/\[b\](.+?)\[\/b\]/i, '<strong>\1</strong>')
str.gsub!(/\[i\](.+?)\[\/i\]/i, '<em>\1</em>')
str.gsub!(/("[^"]+":(https?:\/\/|\/)\S+|https?:\/\/\S+)/m) do |url|
str.gsub!(/\[spoilers?\](.+?)(?:\[\/?spoilers?\]|$)/, '<span class="spoiler">\1</span>')
str = parse_links(str)
str = parse_aliased_wiki_links(str)
str = parse_wiki_links(str)
str = parse_post_links(str)
str = parse_id_links(str)
str
end
def self.parse_links(str)
str.gsub(/("[^"]+":(https?:\/\/|\/)\S+|https?:\/\/\S+)/m) do |url|
if url =~ /^"([^"]+)":(.+)$/
text = $1
url = $2
@@ -34,17 +45,6 @@ class DText
'<a href="' + url + '">' + text + '</a>' + ch
end
# str.gsub!(/\[url\](http.+?)\[\/url\]/i) do
# %{<a href="#{$1}">#{$1}</a>}
# end
# str.gsub!(/\[url=(http.+?)\](.+?)\[\/url\]/m) do
# %{<a href="#{$1}">#{$2}</a>}
# end
str = parse_aliased_wiki_links(str)
str = parse_wiki_links(str)
str = parse_post_links(str)
str = parse_id_links(str)
str
end
def self.parse_aliased_wiki_links(str)
@@ -121,8 +121,6 @@ class DText
unless options[:inline]
str.gsub!(/\s*\[quote\]\s*/m, "\n\n[quote]\n\n")
str.gsub!(/\s*\[\/quote\]\s*/m, "\n\n[/quote]\n\n")
str.gsub!(/\s*\[spoilers?\](?!\])\s*/m, "\n\n[spoiler]\n\n")
str.gsub!(/\s*\[\/spoilers?\]\s*/m, "\n\n[/spoiler]\n\n")
end
str.gsub!(/(?:\r?\n){3,}/, "\n\n")
@@ -163,16 +161,6 @@ class DText
""
end
when /\[spoilers?\](?!\])/
stack << "div"
'<div class="spoiler">'
when /\[\/spoilers?\]/
if stack.last == "div"
stack.pop
'</div>'
end
else
'<p>' + parse_inline(block) + "</p>"
end

View File

@@ -17,8 +17,10 @@ class DTextTest < ActiveSupport::TestCase
end
def test_spoilers
assert_equal("<p>this is</p><div class=\"spoiler\"><p>an inline spoiler</p></div><p>.</p>", p("this is [spoiler]an inline spoiler[/spoiler]."))
assert_equal("<p>this is</p><div class=\"spoiler\"><p>a block spoiler</p></div><p>.</p>", p("this is\n\n[spoiler]\na block spoiler\n[/spoiler]."))
assert_equal("", p("this is [spoiler]an inline spoiler[/spoiler]."))
assert_equal("", p("this is\n\n[spoiler]\na block spoiler\n[/spoiler]."))
assert_equal("", p("[spoiler]this is a spoiler with no closing tag\nnew text"))
assert_equal("", p("[spoiler]this is [spoiler]a nested[/spoiler] spoiler[/spoiler]"))
end
def test_paragraphs