[#4013] regexp question — Kikutani Makoto <kikutani@...>
きくたにです。
まつもと ゆきひろです
[#4029] ruby-mode.el ... _end problem — Kikutani Makoto <kikutani@...>
ruby-mode.el ですが、
まつもと ゆきひろです
Tue, Sep 02, 1997 at 10:05:20AM +0900 において
まつもと ゆきひろです
Tue, Sep 02, 1997 at 10:30:01AM +0900 において
[#4047] make install prefix=hoge — Kikutani Makoto <kikutani@...>
きくたにです。
[#4053] How to 'break' inside case — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
[#4060] ruby-tk on Windows — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
>まつもと ゆきひろです
助田です
わたなべです.
助田です
助田です
原です。
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
まつもと ゆきひろです
酒本です。
わたなべです.
助田です。
In message "[ruby-list:4169] Re: ruby-tk on Windows"
原です。
わたなべです.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
[#4066] ~ (tilde) — Kikutani Makoto <kikutani@...>
きくたにです。
[#4076] which icon is the best? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4083] ruby 1.0-970903 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
小澤@日立 です。
[#4109] can not install 1.0-970903 — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
うさぎです。
大庭@鉄工所です.
[#4126] How to get value (ruby/tk) — Noritsugu Nakamura <nnakamur@...>
あ伊藤です.
まつもと ゆきひろです
[#4145] byte code compiler ? — Kikutani Makoto <kikutani@...>
rubyのインタープリタって、いったん中間コードに変換してから
[#4151] "autoload": NameError ... — taizo@... (Yamamoto Taizou)
[#4164] configure option --bindir= — Noritsugu Nakamura <nnakamur@...>
[#4201] Mini ML Program — Yasunari Momoi <conan@...>
ももちゃん@あるもにこすです.
きくたにです。
まつもと ゆきひろです
[#4211] subscribe — abe@...
阿部雅之と申します。
[#4236] tk sample die — Kikutani Makoto <kikutani@...>
あれ、sampleのtk拡張がみんな動かなくなってしまった。why?
[#4245] ruby 1.0-970909 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4258] class.new { ... } — Kikutani Makoto <kikutani@...>
きくたに@Tk拡張見習い中です。
[#4267] Sample Program ( mbox to INBOX ) — "nagano" <nagano@...>
長野@新日鉄情報通信システム と申します。
[#4272] [Q] tk ext... — Kikutani Makoto <kikutani@...>
きくたにです。
[#4278] Is there any english documentation ? [FreeBSD ports] — Eiji-usagi-MATSUmoto <ematsu@...>
うさぎです。
まつもと ゆきひろです
うさぎです。
まつもと ゆきひろです
うさぎです。
[#4287] Re: Sample Program ( mbox to INBOX ) — "nagano" <nagano@...>
長野です。
[#4309] Re: ruby small bugs — 渡辺博文 <VYV01212@...>
わたなべです.
[#4313] mail address class — akira yamada / やまだあきら <akira@...>
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
前田です。
前田です。
前田です。
出沢@富士フイルムです
わたなべです.
[#4322] ftplib.rb with Win — Masaki Suketa <suke@...>
cygwin32 版 ruby を使って ftplib.rbの
[#4324] ruby seminar — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
うさぎ@勤務地は西田幾太郎生誕の地です。
前田です。
小澤さくです.
うさぎです。
前田です。
うさぎです。
前田です。
[#4329] ruby mailing list sanka kibo. — ma2sim@...
[#4357] nif2news.rb — Kikutani Makoto <kikutani@...>
きくたにです。
前田です。
きくたにです。
まつもと ゆきひろです
[#4364] RE: Re: Mistake in turorial ??? — "EGUCHI Osamu" <eguchi@...>
> 助田です
[#4366] socket — Kikutani Makoto <kikutani@...>
きくたにです。
まつもと ゆきひろです
小澤@日立 です。
わたなべです.
わたなべです.
[#4448] ruby 1.0-970919 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4449] Bug?? (ruby-1.0-970911) — Yuji Shigehiro <sigehiro@...>
ruby-1.0-970701 から, ruby-1.0-970911 にバージョンアップしたところ,
まつもと ゆきひろです
重弘です.
[#4468] Re: ruby 1.0-970919 released — 渡辺博文 <VYV01212@...>
わたなべです.
[#4474] ruby1.0(970919) for mswin32 — Masaki Suketa <suke@...>
助田です。ちょっと長いです。
[#4498] Re: tcltk library — 渡辺博文 <VYV01212@...>
わたなべです.
[#4510] python doc — Kikutani Makoto <kikutani@...>
ここで聞くべきことじゃないのですが、きっと知ってる人がいるだろう
きくたにです。
きくたにさん>
まつもと ゆきひろです
まつもと ゆきひろさん>
助田です
まだ python はかじりはじめたばかりですが、
まつもと ゆきひろです
Wed, Sep 24, 1997 at 02:31:39PM +0900 において
まつもと ゆきひろです
[#4556] install problem of mudule for postgreSQL — Yuichiro Tateno <tateno@...>
うさぎです。
うさぎです。
うさぎです。
まつもと ゆきひろです
まつもと ゆきひろです
うさぎです。
うさぎです。
[#4564] Re: Object#freeze — "EGUCHI Osamu" <eguchi@...>
えぐち です。
前田です。
まつもと ゆきひろです
[#4586] new members — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#4617] array --> float of C (ruby module) — Noritsugu Nakamura <nnakamur@...>
[#4701] XeasyGraphic module — Noritsugu Nakamura <nnakamur@...>
[#4702] warning: global variable `$BODY' not initialized — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#4705] fact.rb (1.0-970919, nextstep) — HYOUDOU Kouichi <hyoudo@...>
兵藤です
[#4738] ruby 1.0-970930 install failed — Yoshiyuki Kusano <kusano@...>
草野@構造計画です.
草野@構造計画です.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
助田です。
[#4741] rbc.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
前田です。
わたなべです.
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[ruby-list:4201] Mini ML Program
ももちゃん@あるもにこすです.
とりあえず ruby 入門ということで,最も単純な ML のプログラムを
書いてみました.
本当はもっとちゃんと機能を付けてから出したかったんですが,
・次に触るのがいつになるか分からない
・まずそうな所はとっとと指摘された方が矯正が楽 :-)
というのがあるので,とりあえず送ってみます.
より美しいスタイル,的確な例外処理 (今はやってない) をどういう
風に入れると頑丈になるか,など,いろいろ教えて頂けると嬉しいで
す (_ _).
--
最終的には,ML や procmail みたいなものを作るための toolkit に
なる部品郡を作ろうと思ってます.
# 最初は perl で書こうと思ってたんだけど,perl で OOP しようと
# してごちゃごちゃになって,嫌になってやめた.
今後欲しい/作るもの:
libSMTP
libMIME
libMailHeader
とりあえず libMailHeader から作ろう...
class CMail
# コンストラクタ
def CMail.new(f)
unless f.kind_of?(IO)
f = open(f, "r")
me = super(f) # call initialize(f)
f.close
else
me = super
end
return me
end
# 初期化
def initialize(f)
@header = []
@body = []
while f.gets()
$_.chop!
next if /^From / # skip From-line
break if /^$/ # end of header
if /^(\S+):\s*(.*)/
attr = $1
@header << $1 + ": " + $2 + "\n"
else
sub!(/^\s+/, '')
@header << @header.pop + "\t" + $_ + "\n"
end
end
return unless $_
while f.gets()
break if /^From /
@body.push($_)
end
end
# メールヘッダを取り出す
def header
return @header
end
# メールボディを取り出す
def body
return @body
end
# 指定ヘッダフィールドを全て取り出す
def [](field)
f = []
@header.each {
|l|
f << l if l =~ /^#{field}: /i
}
return f
end
# ヘッダフィールドの継続行をつなげて一行にする
def join_header
header = []
@header.each {
|l|
line = l.clone
line.gsub!(/\r/, '')
line.gsub!(/\n/, '')
line.gsub!(/\t/, ' ')
if line =~ /^\s+(.*)/
line = header.pop + " " + $1
else
if not header.empty?
header << header.pop + "\n"
end
end
header << line
}
header << header.pop + "\n"
return header
end
end
class CMailSpool
MAX_FILES = 1000 # 1つのディレクトリ以下の最大ファイル数
# コンストラクタ
def CMailSpool.new(d)
return super(d)
end
# 初期化
def initialize(d)
@dir = d
end
# ディレクトリを作る
def create_dir(dir)
Dir.mkdir(dir) if not File.exist?(dir)
end
private :create_dir
# ファイルを入れるべき場所を返す
def where_to_go(article)
return @dir if MAX_FILES <= 0
base = (article / MAX_FILES).to_i * MAX_FILES
return @dir + "/" + base.to_s
end
private :where_to_go
# 現在ある sequence ファイルの中で最大のモノを取り出す
def last_sequence()
dirs = Dir.glob(@dir + "/*")
max = 0
dirs.each {
|l|
next if File.directory?(l)
i = File.basename(l).to_i
max = i if max < i
}
dir = @dir + "/" + max.to_s
files = Dir.glob(dir + "/*")
files.each {
|l|
i = File.basename(l).to_i
max = i if max < i
}
return max
end
private :last_sequence
# sequence 番のファイルに body を書く
def put(seq, body)
dir = where_to_go(seq)
create_dir(dir)
f = File.new(dir + "/" + seq.to_s, "w")
f << body
f.close
end
# 最大の sequence を持つファイルを追加する
def add(body)
print last_sequence, "\n"
put(last_sequence + 1, body)
end
# sequence 番のファイルを get する
def get(seq)
fn = where_to_go(seq) + "/" + seq.to_s
return [] if not File.exist?(fn)
f = File.new(fn, "r")
body = []
f.each {
|l|
body << l
}
f.close
return body
end
end
#!/usr/local/bin/ruby
##########
#
$ml_address = 'hoge-ml@hoge.co.jp'
$ml_admin = 'owner-hoge-ml@hoge.co.jp'
$ml_member = './members'
$ml_spool = './spool'
$sendmail = '/usr/lib/sendmail'
##########
# メンバリストを作る
def get_members(file)
f = File.open(file)
members = ""
f.each_line {
|l|
line = l.clone
line.sub!(/#.*$/, '')
if /(\S+@\S+)/
members += $1 + " "
end
}
f.close
return members
end
##########
# ヘッダを作る
## Reply-To を付ける.元のメールにあったらそれを get.
## いらないフィールドは削る.X-* は残す?
def create_header(header)
field_proc = {
"from:" => Proc.new { |l| l },
"to:" => Proc.new { |l| l },
"cc:" => Proc.new { |l| l },
"mime-version:" => Proc.new { |l| l },
"content-type:" => Proc.new { |l| l },
"content-transfer-encoding:" => Proc.new { |l| l },
"reply-to:" => Proc.new {
|l|
reply_flag = TRUE
l
},
"subject:" => Proc.new {
|l|
s = ""
if l =~ /^subject:\s*(.*)/i
s = $1
end
s.gsub(/re:\s*re:/i, "Re:")
"Subject: " + s + "\n"
},
}
target = []
reply_flag = FALSE
header.each {
|l|
f = l.split[0].downcase
if field_proc.key?(f)
target << field_proc[f].call(l)
end
}
if reply_flag == FALSE
target << "Reply-To: " + $ml_address + "\n"
end
return target
end
##########
# main
require "CMail"
orig = CMail.new(STDIN)
head = create_header(orig.join_header)
body = orig.body
mail = head + "\n" + body
print mail
# メンバリストを取得
member = get_members($ml_member)
print member, "\n"
exit 0
# メールを送る
com = "|" + $sendmail + " -oi -f" + $ml_admin + " " + member
sendmail = open(com, "w")
sendmail.write(mail + "\n")
sendmail.close
# spool に保存
require "CMailSpool"
s = CMailSpool.new($ml_spool)
s.add(mail)
exit 0