diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-27 12:40:03 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-27 12:40:03 +0000 |
commit | c46d3de0f547d18b2b69d08fc765344d617ac5b7 (patch) | |
tree | c3a192737efcb7780479bf74a8698e01b65964bc | |
parent | e1f834f9b473aeea590a93152b200c5033255d68 (diff) |
erb.rb: preserve the behavior for invalid syntax
comment. Fix regression at r58948.
I even don't want to deprecate it because deprecation needs to lex all
embedded Ruby script using Ripper and it would be slow. So Let me just
keep this behavior of Ruby 2.4. No change is the best compatibility.
This commit stopped using String#-@ because it's harmful for "ambiguous
first argument" warning if we really want to maintain this behavior.
[Bug #14243]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | lib/erb.rb | 17 | ||||
-rw-r--r-- | test/erb/test_erb.rb | 7 |
2 files changed, 11 insertions, 13 deletions
diff --git a/lib/erb.rb b/lib/erb.rb index c616178507..062fd496b9 100644 --- a/lib/erb.rb +++ b/lib/erb.rb @@ -291,7 +291,7 @@ class ERB # <i>Generates</i>: # # #coding:UTF-8 - # _erbout=+''; _erbout.<<(-"Got "); _erbout.<<(( obj ).to_s); _erbout.<<(-"!\n"); _erbout + # _erbout=+''; _erbout.<< "Got ".freeze; _erbout.<<(( obj ).to_s); _erbout.<< "!\n".freeze; _erbout # # By default the output is sent to the print method. For example: # @@ -302,7 +302,7 @@ class ERB # <i>Generates</i>: # # #coding:UTF-8 - # print(-"Got "); print(( obj ).to_s); print(-"!\n") + # print "Got ".freeze; print(( obj ).to_s); print "!\n".freeze # # == Evaluation # @@ -576,17 +576,8 @@ class ERB end end - def content_dump(s) # :nodoc: - n = s.count("\n") - if n > 0 - s.dump << "\n" * n - else - s.dump - end - end - def add_put_cmd(out, content) - out.push("#{@put_cmd}(-#{content_dump(content)})") + out.push("#{@put_cmd} #{content.dump}.freeze#{"\n" * content.count("\n")}") end def add_insert_cmd(out, content) @@ -668,7 +659,7 @@ class ERB when '<%=' add_insert_cmd(out, content) when '<%#' - # out.push("# #{content_dump(content)}") + # commented out end end diff --git a/test/erb/test_erb.rb b/test/erb/test_erb.rb index 46f81c778b..045ce5129b 100644 --- a/test/erb/test_erb.rb +++ b/test/erb/test_erb.rb @@ -622,6 +622,13 @@ EOS erb = @erb.new("<%= 1 %>") assert_raise(TypeError) { erb.result_with_hash({ 1 => "1" }) } end + + # Bug#14243 + def test_half_working_comment_backward_compatibility + assert_nothing_raised do + @erb.new("<% # comment %>\n").result + end + end end class TestERBCoreWOStrScan < TestERBCore |