diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2022-11-25 21:32:20 -0800 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-11-26 05:32:25 +0000 |
commit | 574896a0ce99ab00676aa5ff2fabd3dcf8d49154 (patch) | |
tree | d31ed953a4b728256af46749617e33a13118e783 | |
parent | 15be9ecbcc15c1038e1e148780e38cb0ec3e1034 (diff) | |
download | ruby-574896a0ce99ab00676aa5ff2fabd3dcf8d49154.tar.gz |
[ruby/erb] Define ERB::Escape module
(https://github.com/ruby/erb/pull/38)
Close #32
-rw-r--r-- | ext/erb/escape/escape.c | 6 | ||||
-rw-r--r-- | lib/erb/util.rb | 22 |
2 files changed, 18 insertions, 10 deletions
diff --git a/ext/erb/escape/escape.c b/ext/erb/escape/escape.c index 862c7e7a39..67b2d1ef34 100644 --- a/ext/erb/escape/escape.c +++ b/ext/erb/escape/escape.c @@ -1,7 +1,7 @@ #include "ruby.h" #include "ruby/encoding.h" -static VALUE rb_cERB, rb_mUtil, rb_cCGI; +static VALUE rb_cERB, rb_mEscape, rb_cCGI; static ID id_escapeHTML; #define HTML_ESCAPE_MAX_LEN 6 @@ -87,8 +87,8 @@ void Init_escape(void) { rb_cERB = rb_define_class("ERB", rb_cObject); - rb_mUtil = rb_define_module_under(rb_cERB, "Util"); - rb_define_module_function(rb_mUtil, "html_escape", erb_escape_html, 1); + rb_mEscape = rb_define_module_under(rb_cERB, "Escape"); + rb_define_module_function(rb_mEscape, "html_escape", erb_escape_html, 1); rb_cCGI = rb_define_class("CGI", rb_cObject); id_escapeHTML = rb_intern("escapeHTML"); diff --git a/lib/erb/util.rb b/lib/erb/util.rb index 97f5abbba0..c24a175199 100644 --- a/lib/erb/util.rb +++ b/lib/erb/util.rb @@ -1,8 +1,20 @@ +#-- +# 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 - # ERB::Util.html_escape require 'erb/escape' rescue LoadError # JRuby can't load .so end +unless defined?(ERB::Escape) # JRuby + module ERB::Escape + def html_escape(s) + CGI.escapeHTML(s.to_s) + end + module_function :html_escape + end +end #-- # ERB::Util @@ -21,12 +33,8 @@ module ERB::Util # # is a > 0 & a < 10? # - unless defined?(ERB::Util.html_escape) # for JRuby - def html_escape(s) - CGI.escapeHTML(s.to_s) - end - module_function :html_escape - end + include ERB::Escape # html_escape + module_function :html_escape alias h html_escape module_function :h |