summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-02 19:07:45 +0000
committerseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-02 19:07:45 +0000
commit29d4220e9b0323ff28345ff4809c93c6cedfadba (patch)
treeb474457e24af8955b9ee112a389004916271cfaa /lib
parent1b8af3b342833ede0ab4085f0e5a2347c27a15c7 (diff)
Fix without strscan problems. [ruby_core:17028].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/erb.rb31
1 files changed, 16 insertions, 15 deletions
diff --git a/lib/erb.rb b/lib/erb.rb
index 9e68f5d70b..a37832dafe 100644
--- a/lib/erb.rb
+++ b/lib/erb.rb
@@ -357,7 +357,7 @@ class ERB
head = token unless head
if token == "%>\n"
yield('%>')
- if is_erb_stag?(head)
+ if is_erb_stag?(head)
yield(:cr)
else
yield("\n")
@@ -371,21 +371,22 @@ class ERB
end
end
- ExplicitTrimRegexp = /(^[ \t]*<%-)|(-%>\n?\z)|(<%-)|(-%>)|(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>)|(\n)/
def explicit_trim_line(line)
- line.split(ExplicitTrimRegexp).each do |token|
- next if token.empty?
- if @stag.nil? && /[ \t]*<%-/ =~ token
- yield('<%')
- elsif @stag && /-%>\n/ =~ token
- yield('%>')
- yield(:cr)
- elsif @stag && token == '-%>'
- yield('%>')
- else
- yield(token)
- end
- end
+ line.scan(/(.*?)(^[ \t]*<%\-|<%\-|<%%|%%>|<%=|<%#|<%|-%>\n|-%>|%>|\z)/m) do |tokens|
+ tokens.each do |token|
+ next if token.empty?
+ if @stag.nil? && /[ \t]*<%-/ =~ token
+ yield('<%')
+ elsif @stag && token == "-%>\n"
+ yield('%>')
+ yield(:cr)
+ elsif @stag && token == '-%>'
+ yield('%>')
+ else
+ yield(token)
+ end
+ end
+ end
end
ERB_STAG = %w(<%= <%# <%)