erb.rb: Use String#<< instead of #concat

to optimize String concatenation on rendering.

[fix GH-1612]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58735 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
k0kubun 2017-05-15 13:38:02 +00:00
Родитель efd36678e6
Коммит 52c738408e
1 изменённых файлов: 5 добавлений и 5 удалений

Просмотреть файл

@ -281,8 +281,8 @@ class ERB
# #
# compiler = ERB::Compiler.new('<>') # compiler = ERB::Compiler.new('<>')
# compiler.pre_cmd = ["_erbout=String.new"] # compiler.pre_cmd = ["_erbout=String.new"]
# compiler.put_cmd = "_erbout.concat" # compiler.put_cmd = "_erbout.<<"
# compiler.insert_cmd = "_erbout.concat" # compiler.insert_cmd = "_erbout.<<"
# compiler.post_cmd = ["_erbout"] # compiler.post_cmd = ["_erbout"]
# #
# code, enc = compiler.compile("Got <%= obj %>!\n") # code, enc = compiler.compile("Got <%= obj %>!\n")
@ -291,7 +291,7 @@ class ERB
# <i>Generates</i>: # <i>Generates</i>:
# #
# #coding:UTF-8 # #coding:UTF-8
# _erbout=String.new; _erbout.concat "Got "; _erbout.concat(( obj ).to_s); _erbout.concat "!\n"; _erbout # _erbout=String.new; _erbout.<< "Got "; _erbout.<<(( obj ).to_s); _erbout.<< "!\n"; _erbout
# #
# By default the output is sent to the print method. For example: # By default the output is sent to the print method. For example:
# #
@ -867,8 +867,8 @@ class ERB
# requires the setup of an ERB _compiler_ object. # requires the setup of an ERB _compiler_ object.
# #
def set_eoutvar(compiler, eoutvar = '_erbout') def set_eoutvar(compiler, eoutvar = '_erbout')
compiler.put_cmd = "#{eoutvar}.concat" compiler.put_cmd = "#{eoutvar}.<<"
compiler.insert_cmd = "#{eoutvar}.concat" compiler.insert_cmd = "#{eoutvar}.<<"
compiler.pre_cmd = ["#{eoutvar} = String.new"] compiler.pre_cmd = ["#{eoutvar} = String.new"]
compiler.post_cmd = ["#{eoutvar}.force_encoding(__ENCODING__)"] compiler.post_cmd = ["#{eoutvar}.force_encoding(__ENCODING__)"]
end end