From: "xibbar (Takeyuki FUJIOKA)" Date: 2013-05-03T08:57:12+09:00 Subject: [ruby-dev:47315] [ruby-trunk - Feature #8354] lib/cgi/util.rb を関数としても使えるようにしたい Issue #8354 has been updated by xibbar (Takeyuki FUJIOKA). 一般的なコードの中でescapeHTMLが多用されるとは思わないのですが、 cgiアプリの中ではある程度escapeHTMLが必要になります。 これが随所に出てきて、 @cgi = CGI.new("html5") login = @cgi['login'] family_name = @cgi[family_name'] first_name = @cgi[first_name'] @cgi.out do @cgi.header do @cgi.title{"Sample"}+ end+ @cgi.body do @cgi.div{ CGI.escapeHTML(login) }+ @cgi.div{ CGI.escapeHTML(first_name) }+ @cgi.div{ CGI.escapeHTML(family_name) } end end これ、 include CGI::Util @cgi = CGI.new("html5") login = @cgi['login'] family_name = @cgi[family_name'] first_name = @cgi[first_name'] @cgi.out do @cgi.header do @cgi.title{"Sample"}+ end+ @cgi.body do @cgi.div{ h(login) }+ @cgi.div{ h(first_name) }+ @cgi.div{ h(family_name) } end end とかければいいなと。 ※ 動作チェックしないで書いているので、うまく動くかわかんないコードです。 エスケープが面倒なのです。 includeした時しか影響が出ないので、欲しいです。 名前はhじゃなくてもいいですが。 ---------------------------------------- Feature #8354: lib/cgi/util.rb を関数としても使えるようにしたい https://bugs.ruby-lang.org/issues/8354#change-39093 Author: xibbar (Takeyuki FUJIOKA) Status: Open Priority: Normal Assignee: xibbar (Takeyuki FUJIOKA) Category: lib Target version: current: 2.1.0 cgi/util.rb には CGI.escapeHTML などのメソッドがあります。 これらを使うにはCGI.escapeHTML(str) みたいにして いちいち全部書かなきゃならなくて、 長いと思っています。 erbを使っている人なら include ERB::Util すると h(str) と使えるのですが、 私はerb使わずに素のCGIを書いているので、hが使えず不便でした。 なので、中身をutil.rb の中身を丸ごとmoduleにして include CGI::Util すれば、escapeHTMLが使えて、 さらにescapeHTML にhをエイリアスにして、 erbと同じように使えるようにしてしまおうかと思います。 すでにerbでそういう名前で短縮名が使われているので、 新規に仕様を作るまでもなく真似します。 また、今は ERB::Util#h は実体がCGI.escapeHTMLですし。 メンテナが私なので反対がなければ入れたいと思います。 -- http://bugs.ruby-lang.org/