= escape_utils Being as though we're all html escaping everything these days, why not make it faster? At the moment escape_utils supports escaping and unescaping of HTML, and Javascript but I wanna add URL encoding soon. For character encoding in 1.9, we'll return strings in whatever Encoding.default_internal is set to or utf-8 otherwise. It has monkey-patches for Rack::Utils, CGI, ERB::Util and Haml and ActionView so you can drop this in and have your app start escaping fast as balls in no time == Installing gem install escape_utils == Usage === HTML ==== Escaping html = `curl -s http://maps.google.com` escaped_html = EscapeUtils.escape_html(html) ==== Unescaping html = `curl -s http://maps.google.com` escaped_html = EscapeUtils.escape_html(html) html = EscapeUtils.unescape_html(escaped_html) ==== Monkey Patches require 'escape_utils/html/rack' # to patch Rack::Utils require 'escape_utils/html/erb' # to patch ERB::Util require 'escape_utils/html/cgi' # to patch CGI require 'escape_utils/html/haml' # to patch Haml::Helpers === Javascript ==== Escaping javascript = `curl -s http://code.jquery.com/jquery-1.4.2.js` escaped_javascript = EscapeUtils.escape_javascript(javascript) ==== Monkey Patches require 'escape_utils/javascript/action_view' # to patch ActionView::Helpers::JavaScriptHelper == Benchmarks In my testing, escaping html is around 10-20x faster than the pure ruby implementations in wide use today. While unescaping html is around 20-40x faster than CGI.unescapeHTML - also pure ruby. Escaping Javascript is around 16-30x faster. This output is from my laptop using the benchmark scripts in the benchmarks folder. === HTML ==== Escaping Rack::Utils.escape_html 0.560000 0.040000 0.600000 ( 0.589475) ERB::Util.html_escape 0.450000 0.040000 0.490000 ( 0.492893) CGI.escapeHTML 0.460000 0.030000 0.490000 ( 0.490171) Haml::Helpers.html_escape 0.430000 0.010000 0.440000 ( 0.444694) EscapeUtils.escape_html 0.050000 0.010000 0.060000 ( 0.054799) === Unescaping CGI.unescapeHTML 1.140000 0.010000 1.150000 ( 1.148470) EscapeUtils.unescape_html 0.040000 0.000000 0.040000 ( 0.046166) === Javascript ==== Escaping ActionView::Helpers::JavaScriptHelper#escape_javascript 2.000000 0.020000 2.020000 ( 2.023047) EscapeUtils.escape_javascript 0.110000 0.010000 0.120000 ( 0.121761)