fixes #1568
This commit is contained in:
@@ -131,6 +131,8 @@ class DText
|
|||||||
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*\[code\]\s*/m, "\n\n[code]\n\n")
|
str.gsub!(/\s*\[code\]\s*/m, "\n\n[code]\n\n")
|
||||||
str.gsub!(/\s*\[\/code\]\s*/m, "\n\n[/code]\n\n")
|
str.gsub!(/\s*\[\/code\]\s*/m, "\n\n[/code]\n\n")
|
||||||
|
str.gsub!(/\[spoilers?\]\s+/m, "\n\n[spoiler]\n\n")
|
||||||
|
str.gsub!(/\s+\[\/spoilers?\]/m, "\n\n[/spoiler]\n\n")
|
||||||
str.gsub!(/^(h[1-6]\.\s*.+)$/, "\n\n\\1\n\n")
|
str.gsub!(/^(h[1-6]\.\s*.+)$/, "\n\n\\1\n\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -173,6 +175,18 @@ class DText
|
|||||||
""
|
""
|
||||||
end
|
end
|
||||||
|
|
||||||
|
when "[spoiler]"
|
||||||
|
stack << "spoiler"
|
||||||
|
'<div class="spoiler">'
|
||||||
|
|
||||||
|
when "[/spoiler]"
|
||||||
|
if stack.last == "spoiler"
|
||||||
|
stack.pop
|
||||||
|
"</div>"
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end
|
||||||
|
|
||||||
when /\[code\](?!\])/
|
when /\[code\](?!\])/
|
||||||
flags[:code] = true
|
flags[:code] = true
|
||||||
'<pre>'
|
'<pre>'
|
||||||
@@ -197,6 +211,8 @@ class DText
|
|||||||
html << "</div>"
|
html << "</div>"
|
||||||
elsif tag == "pre"
|
elsif tag == "pre"
|
||||||
html << "</pre>"
|
html << "</pre>"
|
||||||
|
elsif tag == "spoiler"
|
||||||
|
html << "</div>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,11 @@ class DTextTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
def test_spoilers
|
def test_spoilers
|
||||||
assert_equal("<p>this is <span class=\"spoiler\">an inline spoiler</span>.</p>", p("this is [spoiler]an inline spoiler[/spoiler]."))
|
assert_equal("<p>this is <span class=\"spoiler\">an inline spoiler</span>.</p>", p("this is [spoiler]an inline spoiler[/spoiler]."))
|
||||||
assert_equal("<p>this is</p><p><span class=\"spoiler\"><br>a block spoiler<br></span>.</p>", p("this is\n\n[spoiler]\na block spoiler\n[/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>[spoiler]this is a spoiler with no closing tag</p><p>new text</p>", p("[spoiler]this is a spoiler with no closing tag\n\nnew text"))
|
assert_equal("<p>[spoiler]this is a spoiler with no closing tag</p><p>new text</p>", p("[spoiler]this is a spoiler with no closing tag\n\nnew text"))
|
||||||
assert_equal("<p>[spoiler]this is a spoiler with no closing tag<br>new text</p>", p("[spoiler]this is a spoiler with no closing tag\nnew text"))
|
assert_equal("<p>[spoiler]this is a spoiler with no closing tag<br>new text</p>", p("[spoiler]this is a spoiler with no closing tag\nnew text"))
|
||||||
assert_equal("<p><span class=\"spoiler\">this is [spoiler]a nested</span> spoiler[/spoiler]</p>", p("[spoiler]this is [spoiler]a nested[/spoiler] spoiler[/spoiler]"))
|
assert_equal("<p><span class=\"spoiler\">this is [spoiler]a nested</span> spoiler[/spoiler]</p>", p("[spoiler]this is [spoiler]a nested[/spoiler] spoiler[/spoiler]"))
|
||||||
|
assert_equal("<div class=\"spoiler\"><p>this is a block spoiler with no closing tag</p></div>", p("[spoiler]\nthis is a block spoiler with no closing tag"))
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_paragraphs
|
def test_paragraphs
|
||||||
|
|||||||
Reference in New Issue
Block a user