2006-04-02から1日間の記事一覧

Enumerable で拡張してみます

ruby には Enumerable というモジュールがあり、集合を扱うクラス(コレクション)にこのモジュールを mix-in すると、Enumerable が備える各種メソッドが使えるようになるそうです。例えば collect find_all map grep など各種メソッドが使えます。そこで、先…

Iterator パターン

id:hyuki さんのデザインパターン本の Iterator パターンを Ruby に移植してみます。 #!/usr/local/bin/ruby class Iterator def has_next end def next end end class Aggregate def iterator end end class Book attr_reader :name def initialize(name) @…

RSS を YAML に変換する

ここまで学んだことの応用で、RSS をリモートから取得して YAML に変換してファイルに保存、というのをしたいです。RSS2YAML というクラスを作って処理してみることにしました。 RSS2YAML.new('http://d.hatena.ne.jp/rubyo/rss').to_yamlで RSS::RDF オブジ…

RSS フィードを処理する

Ruby で RSS フィードを処理したいです。open-uri でこの日記のフィードを取得して rss/1.0 で parse するというのをしてみます。 #!/usr/local/bin/ruby require 'open-uri' require 'rss/1.0' content = Kernel.open('http://d.hatena.ne.jp/rubyo/rss') r…

HTTP でコンテンツを取得する

Ruby で HTTP を使ってコンテンツを取得したいです。open-uri というのが使えそうです。open-uri を使うと Kernel.open メソッド(?) の引数に URI が指定できるようになり、local のファイルと同じようにリモートコンテンツが扱えたりするようです。 #!/usr/…

irb で文法確認

ちょっとした文法を確認したい場合は irb を使うといいみたいです。perl では perlsh というのがありますね。 $ irb irb(main):001:0> include Math => Object irb(main):002:0> sqrt(10000) => 100.0

Ruby で YAML

Ruby で YAML を処理したいです。Ruby で YAML を使うには require 'yaml' としてからコードを書いていけば良いようです。Perl では use YAML、などですね。Ruby では 外部ライブラリの読み込みは require を使うようです。準備のためにワインを表現した Win…

Ruby で grep

#!/usr/local/bin/ruby class Grep def initialize(string) @string = string || '' end def grep(pattern) @string if pattern.match(@string) end end pattern, file = Regexp.new(ARGV[0]), ARGV[1] File.open(file).each do |line| g = Grep.new(line) g…

るびおです。

id:rubyco さんに同じく Ruby を勉強しています。よろしくお願いします。

Template Method パターン

id:hyuki さんのデザインパターン本から Adapter パターンを移植してみます。 #!/usr/local/bin/ruby class AbstractDisplay def display self.open 5.times do self.print end self.close end end class CharDisplay < AbstractDisplay def initialize(ch) …

initialize に渡された値を自動的にインスタンス変数にする

みたいなことは ruby ではどうやるのでしょう。 class Player def initialize(name, age) @name = name @age = age end endというインスタンス変数に引数を丸投げするコンストラクタをよく書くのですが、いつも書くのが面倒です。

Adapter パターン

id:hyuki さんのデザインパターン本から Adapter パターンを移植してみます。まずは継承を使った Adapter です。書籍での interface Print は使いません。 #!/usr/local/bin/ruby class Banner def initialize(string) @string = string end def show_with_p…