diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-24 07:16:52 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-24 07:16:52 +0000 |
commit | 9d1d2816aab7b2b4542a36fbfc085b3292fe00f1 (patch) | |
tree | 712427d89e78ed12e3137fb99803f9e95bebcc9b /lib | |
parent | 8cc81b3a6c473baaa543aca68df7e4d798a3eeeb (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.rb | 29 |
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(<%= <%# <%) |