This article was migrated from http://rai
Rubyのダックタイピングを活用して、シンプルかつ汎用的な
Stringパーサ&コンバータstring_to.
を書いてみました。
このコードは、to_xxxx_xx
メッセージを受け取り、
XxxxXxxx#parse(self)
を呼び出すことで
自分自身をXxxxXxxx
に変換する
method_mis
ハンドラをStringクラスに付け加えます。
class String
def method_mis sing(method, *arg, &block)
method_nam e = method.to_ s
if method_nam e.slice!(0..2) == "to_"
method_nam e.gsub!(%r(__), '::_')
method_nam e.camelize .constanti ze.parse(self, *arg, &block)
else
super
end
end
end
利用方法:
上のコードをコピーして、
$:
の通った場所にstring_to.
として保存し、rb そしてこの機能を使いたいところから
require
します。
require 'date' require 'uri' require 'string_to' "2007-2-11".to_date #=> Date.parse(self) "http://www .drecom.co .jp/".to_URI #=> URI.parse(self)
[English]
POSTSCRIPT
constantiz
やcamelize
等のRails依存のメソッドを
書き直して、RubyForgeにプロジェクトを登録しました。
string-toこれでようやく、いつものようにgemコマンドでインストールできるようになりました。
$ sudo gem install string-to使い方は以下のとおり:
require 'rubygems' require 'string_to' require 'date' "2007-2-13".to_date # => Date.parseparseメソッドを実装しているクラスやモジュールは意外と多いですね。 CGI、Date、Name、Ripper、URI、Time、YAML、JSON、CGI::Cooki("2007-2-13")
次のバージョンでは、parseメソッドがあったら便利なモジュールにparseを追加するのをやろう。
This article was migrated from http://rai
posted by
genki
on Sun 11 Feb 2007
at 09:32