[#4060] ruby-tk on Windows — Eiji-usagi-MATSUmoto <ematsu@...>

うさぎです。

70 messages 1997/09/03
[#4061] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/03

まつもと ゆきひろです

[#4064] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/03

>まつもと ゆきひろです

[#4071] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/03

[#4075] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/03

助田です

[#4089] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/04

助田です

[#4165] Re: ruby-tk on Windows — Masaki Suketa <suke@...> 1997/09/08

助田です

[#4168] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/08

[#4169] Re: ruby-tk on Windows — Shin-ichiro HARA <sinara@...> 1997/09/08

原です。

[#4170] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4172] Re: ruby-tk on Windows — WATANABE Hirofumi <watanabe@...> 1997/09/08

わたなべです.

[#4174] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4187] Re: ruby-tk on Windows — KIMURA Koichi <kkimura@...> 1997/09/08

[#4188] Re: ruby-tk on Windows — matz@... (Yukihiro Matsumoto) 1997/09/08

まつもと ゆきひろです

[#4190] Re: ruby-tk on Windows — sakamoto@... (Sadayuki Sakamoto) 1997/09/08

酒本です。

[#4083] ruby 1.0-970903 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 1997/09/03

[#4278] Is there any english documentation ? [FreeBSD ports] — Eiji-usagi-MATSUmoto <ematsu@...>

うさぎです。

11 messages 1997/09/11

[#4313] mail address class — akira yamada / やまだあきら <akira@...>

36 messages 1997/09/15
[#4406] Re: mail address class — akira yamada <akira@...> 1997/09/18

[#4408] Re: mail address class — keiju@... (石塚圭樹 ) 1997/09/18

けいじゅ@日本ラショナルソフトウェアです.

[#4506] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/09/22

[#4637] Re: mail address class — keiju@... (石塚圭樹 ) 1997/09/25

けいじゅ@日本ラショナルソフトウェアです.

[#5042] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/17

[#5043] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/18

前田です。

[#5044] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/18

[#5047] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/18

前田です。

[#5053] Re: mail address class — akira yamada / やまだあきら <akira@...> 1997/10/19

[#5067] Re: mail address class — shugo@... (Shugo Maeda) 1997/10/20

前田です。

[#4324] ruby seminar — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

37 messages 1997/09/16
[#4337] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/16

前田です。

[#4339] Re: ruby seminar — matz@... (Yukihiro Matsumoto) 1997/09/16

まつもと ゆきひろです

[#4387] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/18

前田です。

[#4391] Re: ruby seminar — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/18

うさぎ@勤務地は西田幾太郎生誕の地です。

[#4407] Re: ruby seminar — shugo@... (MAEDA Shugo) 1997/09/18

前田です。

[#4366] socket — Kikutani Makoto <kikutani@...>

きくたにです。

21 messages 1997/09/17
[#4389] Re: socket — matz@... (Yukihiro Matsumoto) 1997/09/18

まつもと ゆきひろです

[#4449] Bug?? (ruby-1.0-970911) — Yuji Shigehiro <sigehiro@...>

ruby-1.0-970701 から, ruby-1.0-970911 にバージョンアップしたところ,

16 messages 1997/09/19

[#4510] python doc — Kikutani Makoto <kikutani@...>

ここで聞くべきことじゃないのですが、きっと知ってる人がいるだろう

34 messages 1997/09/22
[#4555] Re: python doc — Kikutani Makoto <kikutani@...> 1997/09/24

きくたにです。

[#4562] Re: python doc — gotoken@... (GOTO Kentaro) 1997/09/24

きくたにさん>

[#4563] ruby animal (Re: python doc) — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4567] Re: ruby animal (Re: python doc) — gotoken@... (GOTO Kentaro) 1997/09/24

まつもと ゆきひろさん>

[#4577] Re: ruby animal (Re: python doc) — Masaki Suketa <suke@...> 1997/09/24

助田です

[#4556] install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...>

30 messages 1997/09/24
[#4559] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4574] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4580] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4595] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4603] Re: install problem of mudule for postgreSQL — Eiji-usagi-MATSUmoto <ematsu@...> 1997/09/24

うさぎです。

[#4612] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4614] Re: install problem of mudule for postgreSQL — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4616] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/24

[#4622] Re: install problem of mudule for postgreSQL — matz@... (Yukihiro Matsumoto) 1997/09/24

まつもと ゆきひろです

[#4632] Re: install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...> 1997/09/25

[#4738] ruby 1.0-970930 install failed — Yoshiyuki Kusano <kusano@...>

草野@構造計画です.

15 messages 1997/09/30

[#4741] rbc.rb — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

33 messages 1997/09/30
[#4759] Re: rbc.rb — shugo@... (MAEDA Shugo) 1997/10/02

前田です。

[#4773] Re: rbc.rb — keiju@... (石塚圭樹 ) 1997/10/03

けいじゅ@日本ラショナルソフトウェアです.

[#4778] Re: rbc.rb — shugo@... (MAEDA Shugo) 1997/10/03

前田です。

[#4793] Re: rbc.rb — keiju@... (石塚圭樹 ) 1997/10/04

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:4356] Re: mail address class

From: keiju@... (石塚圭樹 )
Date: 1997-09-17 01:50:52 UTC
List: ruby-list #4356
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :04313 ] the message: "[ruby-list:4313] mail address
class ", on Sep/15 20:17(JST) akira yamada / やまだあきら 
<akira@linux.or.jp> writes:

>やまだあきらです.

>趣味と実益を兼ねて(ちょっと違うな ^_^;) ruby の勉強中です.
>と言うわけで, メールアドレスを解析するための(?)class を
>試しに作ってみました.

おお. 素晴らしい.

>最近の流れに沿って「どうすれば ruby らしく…」と言いたいところですが, 
>いい加減プログラミングのやり方も知らないド素人ですので
>「どうすればプログラムらしく…」の方が問題かもしれません.
>ま, それはともかく「どうすれば ruby らしく」なるか
>ヒントだけでも教えていただけるとありがたいです. 

私のコメントは, 松本氏のいうところの ruby らしいよりもちょっと硬いかも
知れませんが, 1つの意見だと思って聞いて下さい.

気づいたところをツラツラと書きます.

1. def debug_print(level = 0, string = "") など

デフォルト引数を用いているメソッド定義がほとんどですが, 利用することは
滅多にないと思うので用いない方が良いんじゃないかと思います.

2. module RFC822 と class Addresses/class Addressについて

この場合, class Addressesやclass Addressでmodule RFC822をインクルード
した方が良いでしょう. そうすると例えば,

  def parse(mailboxes = "", header = "")
    parts = mailboxes.split(RFC822::DELIMITERS_REGEX)
    parts.delete("")

が,

  def parse(mailboxes = "", header = "")
    parts = mailboxes.split(DELIMITERS_REGEX)
    parts.delete("")

のように書けます.

3. class Addressesについて

こういう複数系のクラスは滅多にないですし, クラス自身の目的も良く分かり
ません. パーザと整形(folding)を兼ねている見たいですが, クラスにする必
要はないでしょう.

今回はAddressの特異メソッドにするのが良いんじゃないかと思います.

class Address
  include RFC822
  
  # 旧Adresses#perse: addressの配列を返す
  def Address.read(str) 
    addresses = []
    ...
    return addresses
  end

  # 旧Addresses#fold: addressの配列を受けとりfoldingする
  def Address.fold(addresses, len)
    ...
  end

end

ちなみに, もっと複雑な字句解析系や構文解析系であれば, クラスにするとい
うこともありえるとは思います. 例えば, ファイルや長い文字列から1トークン
づつ切り出すような機能を実装するならクラスとすることもあるとは思います.

4. 再びmodule RFC822について

上記のように Addressクラス1つになるとこのモジュールはとりあえず必要な
くなりますね. Addressの(クラス)定数にすることも可能だと思います. 将来
的にこのモジュールを利用する他のクラスを用意するつもりなら今のままでも
良いと思います.


5. ここからは, 個別に指摘していきます.

def debug_print(level = 0, string = "")

このままだと, 1文字列しか渡せないので,

def debug_print(level, *strings)

としたらいかがでしょう?

実際には1文字列しか渡している例はありませんが, このようなルーチンは他
のプログラムにも使えますので, デバッグ用の汎用のモジュールとして用意し
ていけば良いんじゃないかしら?

# メールアドレスを扱うためのクラス:
#   o MX レコードを参照できる (やってない)

この機能はきっとここのアドレスに対しておこなうものでしょうから, もし組
み込むならAddressのメソッドにしたら良いと思います.

#   o まじめに MIME エンコードできる (やってない)
#   o MIME デコードできる (やってない)

MIMEに関しては, ここで作るのでなくて別モジュールにした方が良いと思いま
すよ. そうすれば, Addressに限らずいろいろなところで利用できますから.

  def parse(mailboxes = "", header = "")

RFC822をちゃんとは知らないので, 何ともいえないのですが, ちょっと気になっ
たことを, コメント中で`"'が来た場合は, quoted-stringの始まりとして良い
んですか?

# このメソッドに限らずの話しなんですが, 字句解析系はもっとも rubyらし
# くなくなりますね...


__
................................石塚 圭樹@日本ラショナルソフトェア...
----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---

In This Thread