読者です 読者をやめる 読者になる 読者になる

(続)String#{escape_html, unescape_html, escape_uri, unescape_uri} をつけたい

Ruby

Twitterでメソッド名がよくないという
反応だったのでちょっと修正してみました。

--- a/lib/cgi/util.rb
+++ b/lib/cgi/util.rb
@@ -195,4 +195,29 @@ class CGI
     end
     lines.gsub(/^((?:#{Regexp::quote(shift)})*)__(?=<\/?\w)/, '\1')
   end
+
+  class ::String
+    def escapeHTML
+      CGI::escapeHTML(self)
+    end
+
+    def unescapeHTML
+      CGI::unescapeHTML(self)
+    end
+
+    alias escape_html escapeHTML
+    alias unescape_html unescapeHTML
+
+    def escape_uri
+      CGI::escape(self)
+    end
+
+    def unescape_uri(charset=nil)
+      charset ? CGI::unescape(self, charset) : CGI::unescape(self)
+    end
+
+    alias escape_url escape_uri
+    alias unescape_url unescape_uri
+
+  end
 end

実行結果がこんな感じ。

% ruby -rcgi/util -e "puts '%E7%99%BD%E3%81%A0%E3%81%97'.unescape_uri"
白だし

Cで実装しろという話もありましたが、
そんなのすぐには完成しないので、また今度。