summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-24 07:16:52 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-24 07:16:52 +0000
commit9d1d2816aab7b2b4542a36fbfc085b3292fe00f1 (patch)
tree712427d89e78ed12e3137fb99803f9e95bebcc9b /lib
parent8cc81b3a6c473baaa543aca68df7e4d798a3eeeb (diff)
merge revision(s) 16763:
* lib/erb.rb (ERB::Compiler::TrimScanner#explicit_trim_line): Fix without strscan problems. [ruby_core:17028]. * test/erb/test_erb.rb (TestERBCoreWOStrScan): Add test class for without strscan. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@17555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/erb.rb29
1 files changed, 15 insertions, 14 deletions
diff --git a/lib/erb.rb b/lib/erb.rb
index b714aa1ea6..d7c72b4988 100644
--- a/lib/erb.rb
+++ b/lib/erb.rb
@@ -365,21 +365,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(<%= <%# <%)