Jelajahi Sumber

[ruby] Use ERB::Escape for html escaping (#10176)

It should be slight faster as it doesn't allocate a new string when
nothing needs to be escaped.
https://github.com/ruby/erb/blob/6a5729b7e291e30432f3955e443cc3e6c9215b60/ext/erb/escape/escape.c

Also Rack::Utils delegates to ERB if it's present.

Co-authored-by: 尤雨东 <[email protected]>
Petrik de Heus 2 bulan lalu
induk
melakukan
5b03eb973c

+ 1 - 1
frameworks/Ruby/agoo/app.rb

@@ -127,7 +127,7 @@ class FortunesHandler < BaseHandler
     f_2 = f_1.map(&:to_h).
             append({ 'id' => '0', 'message' => 'Additional fortune added at request time.' }).
               sort_by { |item| item['message'] }.
-                map { |f| "<tr><td>#{ f['id'] }</td><td>#{ CGI.escape_html(f['message']) }</td></tr>" }.
+                map { |f| "<tr><td>#{ f['id'] }</td><td>#{ ERB::Escape.html_escape(f['message']) }</td></tr>" }.
                   join
 
     html_response(<<-HTML)

+ 1 - 1
frameworks/Ruby/rack-sequel/hello_world.rb

@@ -70,7 +70,7 @@ class HelloWorld
       html << <<~"HTML"
       <tr>
         <td>#{fortune.id}</td>
-        <td>#{CGI.escape_html(fortune.message)}</td>
+        <td>#{ERB::Escape.html_escape(fortune.message)}</td>
       </tr>
       HTML
     end

+ 1 - 1
frameworks/Ruby/rack/hello_world.rb

@@ -58,7 +58,7 @@ class HelloWorld
     buffer << TEMPLATE_PREFIX
 
     fortunes.each do |item|
-      buffer << "<tr><td>#{item[:id]}</td><td>#{Rack::Utils.escape_html(item[:message])}</td></tr>"
+      buffer << "<tr><td>#{item[:id]}</td><td>#{ERB::Escape.html_escape(item[:message])}</td></tr>"
     end
     buffer << TEMPLATE_POSTFIX
   end

+ 1 - 1
frameworks/Ruby/sinatra-sequel/views/fortunes.erb

@@ -6,7 +6,7 @@
 <% @fortunes.each do |fortune| %>
 <tr>
   <td><%= fortune.id %></td>
-  <td><%= CGI.escape_html(fortune.message) %></td>
+  <td><%= ERB::Escape.html_escape(fortune.message) %></td>
 </tr>
 <% end %>
 </table>

+ 1 - 1
frameworks/Ruby/sinatra/views/fortunes.erb

@@ -6,7 +6,7 @@
 <% @fortunes.each do |fortune| %>
 <tr>
   <td><%= fortune.id %></td>
-  <td><%= CGI.escape_html(fortune.message) %></td>
+  <td><%= ERB::Escape.html_escape(fortune.message) %></td>
 </tr>
 <% end %>
 </table>