diff options
Diffstat (limited to 'lib/erb/util.rb')
-rw-r--r-- | lib/erb/util.rb | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/erb/util.rb b/lib/erb/util.rb new file mode 100644 index 0000000000..1d2a36275d --- /dev/null +++ b/lib/erb/util.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true +#-- +# ERB::Escape +# +# A subset of ERB::Util. Unlike ERB::Util#html_escape, we expect/hope +# Rails will not monkey-patch ERB::Escape#html_escape. +begin + # We don't build the C extension for JRuby, TruffleRuby, and WASM + if $LOAD_PATH.resolve_feature_path('erb/escape') + require 'erb/escape' + end +rescue LoadError # resolve_feature_path raises LoadError on TruffleRuby 22.3.0 +end +unless defined?(ERB::Escape) + module ERB::Escape + def html_escape(s) + CGI.escapeHTML(s.to_s) + end + module_function :html_escape + end +end + +#-- +# ERB::Util +# +# A utility module for conversion routines, often handy in HTML generation. +module ERB::Util + # + # A utility method for escaping HTML tag characters in _s_. + # + # require "erb" + # include ERB::Util + # + # puts html_escape("is a > 0 & a < 10?") + # + # _Generates_ + # + # is a > 0 & a < 10? + # + include ERB::Escape # html_escape + module_function :html_escape + alias h html_escape + module_function :h + + # + # A utility method for encoding the String _s_ as a URL. + # + # require "erb" + # include ERB::Util + # + # puts url_encode("Programming Ruby: The Pragmatic Programmer's Guide") + # + # _Generates_ + # + # Programming%20Ruby%3A%20%20The%20Pragmatic%20Programmer%27s%20Guide + # + def url_encode(s) + CGI.escapeURIComponent(s.to_s) + end + alias u url_encode + module_function :u + module_function :url_encode +end |