summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-11 07:58:02 +0000
committerseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-11 07:58:02 +0000
commit2d53925643c5756d8e750f212713fe666fc6f76b (patch)
tree397ed83622c6390b704035b0c35baf5b1871f4d1
parent832740d15c94b8f104f4f2774d3001864a3dd5f9 (diff)
remove PercentScanner. fixed % after %> bug. [ruby-dev:37751] [Bug #997]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog7
-rw-r--r--lib/erb.rb34
-rw-r--r--test/erb/test_erb.rb4
3 files changed, 11 insertions, 34 deletions
diff --git a/ChangeLog b/ChangeLog
index ff08b5ba01..b5bea0e0db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sun Jan 11 16:53:14 2009 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+
+ * lib/erb.rb (PercentScanner): remove PercentScanner. fixed % after
+ %> bug. [ruby-dev:37751] [Bug #997]
+
+ * test/erb/test_erb.rb: ditto
+
Sun Jan 11 09:53:01 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/socket/mkconstants.rb (c_str): get rid of a 1.9 feature for
diff --git a/lib/erb.rb b/lib/erb.rb
index 65a10f0d68..678f082b07 100644
--- a/lib/erb.rb
+++ b/lib/erb.rb
@@ -444,40 +444,6 @@ class ERB
end
Scanner.regist_scanner(SimpleScanner2, nil, false)
- class PercentScanner < Scanner # :nodoc:
- def scan(&blk)
- stag_reg = /(.*?)(^%%|^%|<%%|<%=|<%#|<%|\z)/m
- etag_reg = /(.*?)(%%>|%>|\z)/m
- scanner = StringScanner.new(@src)
- while ! scanner.eos?
- scanner.scan(@stag ? etag_reg : stag_reg)
- yield(scanner[1])
-
- elem = scanner[2]
- if elem == '%%'
- yield('%')
- inline_scan(scanner.scan(/.*?(\n|\z)/), &blk)
- elsif elem == '%'
- yield(PercentLine.new(scanner.scan(/.*?(\n|\z)/).chomp))
- else
- yield(elem)
- end
- end
- end
-
- def inline_scan(line)
- stag_reg = /(.*?)(<%%|<%=|<%#|<%|\z)/m
- etag_reg = /(.*?)(%%>|%>|\z)/m
- scanner = StringScanner.new(line)
- while ! scanner.eos?
- scanner.scan(@stag ? etag_reg : stag_reg)
- yield(scanner[1])
- yield(scanner[2])
- end
- end
- end
- Scanner.regist_scanner(PercentScanner, nil, true)
-
class ExplicitScanner < Scanner # :nodoc:
def scan
stag_reg = /(.*?)(^[ \t]*<%-|<%%|<%=|<%#|<%-|<%|\z)/m
diff --git a/test/erb/test_erb.rb b/test/erb/test_erb.rb
index f9359c2f77..be9df0dbc3 100644
--- a/test/erb/test_erb.rb
+++ b/test/erb/test_erb.rb
@@ -442,6 +442,10 @@ EOS
assert_equal("%A5%B5%A5%F3%A5%D7%A5%EB",
ERB::Util.url_encode("\xA5\xB5\xA5\xF3\xA5\xD7\xA5\xEB".force_encoding("EUC-JP")))
end
+
+ def test_percent_after_etag
+ assert_equal("1%", @erb.new("<%= 1 %>%", nil, "%").result)
+ end
end
class TestERBCoreWOStrScan < TestERBCore