зеркало из https://github.com/github/ruby.git
[ruby/erb] Define ERB::Escape module
(https://github.com/ruby/erb/pull/38) Close #32
This commit is contained in:
Родитель
15be9ecbcc
Коммит
574896a0ce
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче