зеркало из https://github.com/github/ruby.git
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
This commit is contained in:
Родитель
e1f834f9b4
Коммит
c46d3de0f5
17
lib/erb.rb
17
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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче