[#6214] RE^2: HTML class — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6118] Re: HTML class
[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ももちゃん@あるもにこすです.
まつもと ゆきひろです
In message <199802040557.OAA18458@picachu.netlab.co.jp>
まつもと ゆきひろです
In message <199802040739.QAA20750@picachu.netlab.co.jp>
まつもと ゆきひろです
In message <199802040803.RAA24375@picachu.netlab.co.jp>
[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>
助田です。
ことけんです
まつもと ゆきひろです
しげひろです.
まつもと ゆきひろです
ももちゃん@あるもにこすです.
まつもと ゆきひろです
ももちゃん@あるもにこすです.
まつもと ゆきひろです
[#6256] pop & smtp-lib.rb — tateishi@... (Takaaki TATEISHI)
立石@理科大です。
[#6272] I'd like to subscribe this ML — INOUE Katsuyuki <inoue@...>
井上勝行 と申します。
[#6279] Re: i++ — 助田 雅紀 <masaki.suketa@...>
助田です。
[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>
オブジェクト指向周辺をぶらぶらしている助田です。
まつもと ゆきひろです
井上勝行です。
まつもと ゆきひろです
[#6315] install some versions — gotoken@... (GOTO Kentaro)
ごとけんです
[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp
さくです.
さくです.自己フォロー.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
[#6342] Re: ruby's design policy (Re: I'd like to su bscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>
助田です。
[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
わたなべです.
ふなばです。
まつもと ゆきひろです
ふなばです。
[#6373] call for scripts — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
金城です.
まつもと ゆきひろです
金城です.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
原です。
From: Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp>
きくたに@ぷ〜たろ〜です。
さくです.
わたなべです.
まつもと ゆきひろです
前田です。
前田です。
まつもと ゆきひろです
前田です。
前田です。
前田です。
前田です。
わたなべです.
けいじゅ@日本ラショナルソフトウェアです.
Regard to "[ruby-list:7447] Re: call for scripts"
> もっと良いものがあるかもしれないと考え,実例集に載せられるよ
sort-schedule.rbで、ちょっと疑問に思っていることがあるのです
ふなばです。
In message <19980222011624S.tadf@kt.rim.or.jp>
前田です。
ふなばです。
[#6422] simple_chat_server — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6395] Re: call for scripts
[#6447] gsub — Tadayoshi Funaba <tadf@...>
ふなばです。
[#6514] ROT13/47 — OZAWA Sakuro <crouton@...>
小澤さくです.
[#6516] RE^2: simple_chat_server — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6437] Re: simple_chat_server
まつもと ゆきひろです
class String; def - x; end; end; %-
[#6538] IE favorites to HTML — OZAWA Sakuro <ozawa@...>
小澤さくです。会社からもMLに入っちゃいます。
[#6565] Re: Counter class [Re: i++ ] — toyofuku@...
豊福@パパイヤです。
[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>
小澤さくです。
わたなべです.
小澤さくです。
けいじゅ@日本ラショナルソフトウェアです.
[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
さくです.
前田です。
小澤さくです。
うさぎの名前ででています:-)
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#6601] 8-queen — TAKAHASHI Masayoshi <maki@...>
高橋です。今度ちゃんと1.1b7にします……と書こうとしたら、b8になって
[#6605] true/TRUE false/FALSE nil/NIL — OZAWA Sakuro <crouton@...>
小澤さくです.
前田です。
まつもと ゆきひろです
[#6610] tcltklib dosen't compile — TEI meiki <tei@...>
鄭です。
[#6621] here document — Tadayoshi Funaba <tadf@...>
ふなばです。
[#6635] hello — WATANABE Tetsuya <tetsu@...>
渡辺哲也と申します。
まつもと ゆきひろです
>>>>> "matz" == Yukihiro Matsumoto <matz@netlab.co.jp> writes:
[#6706] Re: Counter class — toyofuku@...
豊福@パパイヤです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
まつもと ゆきひろです
[#6786] Re: Mutex/ConditionVariable/Queue — senda@...
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
前田です。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
In message <199802261520.AAA18702.keiju@cupmail0.rational.com>
前田です。
In message <199802270237.CAA00362@soleil.localnet.or.jp>
前田です。
In message <199802270635.GAA00354@soleil.localnet.or.jp>
[#6819] ruby 1.1b9 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#6829] monitor.rb — shugo@... (Shugo Maeda)
前田です。
[#6830] what is 'octet decimal' — OZAWA Sakuro <crouton@...>
さくです.
[#6852] Counting Semaphore — Kazuhisa YANAGAWA <katze@...>
Counting semaphore をちょっと作ってみました. 見ての通り, コードは
[ruby-list:6554] Re: call for scripts
服部です。
私も参加させてください。
*説明*
超低機能 NDTP(Network Dictionary Transfer Protocol) クライアント
です。
`-h' オプションで使い方を表示します。
検索文字列が「かな」か ASCII かを Kconv.guess で判別していますが、
短いかな文字列は判別できないことがあるようなので、その場合は明示
的に `-k' オプションを指定してください。
サーバとして dserver 2.2beta-pl2 および ndtpd 1.0.4 を用いて動作
確認しましたが、辞書は研究社「新英和・和英中辞典(第6/4版)」
(電子ブック版)しか使っていないので、他の辞書では問題がある可能
性大です。
---
服部 純
jhat@kw.netlaputa.or.jp
===
#!/usr/local/bin/ruby
#
# sinc -- simple NDTP client
#
class NDTP
require 'socket'
require 'kconv'
include Kconv
def initialize(host, port = 'ndtp')
@sock = TCPsocket.new(host, port)
@sock.write "ANDTP\n"
while @sock.gets != "$A\n"
next if /dictnum=/ # not documented, but sent by dserver
raise 'Authentication failed'
end
end
def close
@sock.write "Q\n"
@sock.flush
@sock.close
end
def list_dict
@sock.write "t\n"
dlist = []
while @sock.gets != "$*\n"
next if $_ == "$I\n"
if /^\s*(\d+)\t([^\t]+)/
dlist.push([$1, $2])
next
end
raise 'Cannot get a dictionary list'
end
dlist
end
def select_dict(id)
@sock.write "L#{id}\n"
@sock.gets == "$*\n" or raise 'Cannot select the dictionary'
end
def search(word, kana = FALSE)
cmd = if kana || [JIS, EUC, SJIS].member?(guess(word))
if (word = toeuc(word)) =~ /^\*/
'K' + word.split(//).reverse.join
else
'k' + word
end
else
if word =~ /^\*/
'A' + word.reverse
else
'a' + word
end
end
@sock.write "P#{cmd}\n"
@sock.gets == "$0\n" or raise 'Cannot search the word'
hlist = []
while (s1 = @sock.gets) != "$$\n"
s2 = @sock.gets
hlist.push([s1.chomp, s2.chomp])
end
hlist
end
def get_text(pos)
@sock.write "S#{pos}\n"
@sock.gets == "$1\n" or raise 'Cannot get text'
text = ''
text += $_ while @sock.gets != "$$\n"
text
end
end
def usage
myname = File.basename($0)
STDERR.print "\
usage: #{myname} [-s SERVER][-p PORT][-d DICT][-e ENTRY][-x NUM][-k] WORD
#{myname} [-s SERVER][-p PORT][-d DICT][-x NUM] -l LINK
#{myname} [-s SERVER][-p PORT] -d 0
#{myname} [-h]
WORD word to search (pre/suffixed `*' matches any sequence of chars)
-s SERVER server name (default: $NDTPSERVER or `localhost')
-p PORT port No. or service name (default: `ndtp')
-d DICT dictionary No. (0: dictionary listing only; default: 1)
-e ENTRY entry No. (0: entry listing only; default: 1)
-x NUM expand links NUM times recursively (default: 0)
-l LINK specify link position(frame:offset)
-k force kana search
-h show this help
"
exit
end
def die(*msg)
STDERR.print msg
exit 1
end
require 'getopts'
getopts('hk', 's:', 'p:', 'd:', 'e:', 'x:', 'l:') or die "bad option.\n"
usage if $OPT_h
server = $OPT_s || ENV['NDTPSERVER'] || 'localhost'
port = $OPT_p || 'ndtp'
dict = ($OPT_d || '1').to_i
entry = ($OPT_e || '1').to_i
expand = ($OPT_x || '0').to_i
link = $OPT_l
kana = $OPT_k
(ARGV[0] || link || dict == 0) or usage
ndtp = NDTP.new(server, port)
dictlist = ndtp.list_dict
if dict == 0
dictlist.each { |d| print " #{d[0]} : #{d[1]}\n" }
exit
end
dict.between?(1, dictlist.length) or die "bad dictionary No.\n"
ndtp.select_dict(dict)
if link
link =~ /^[0-9A-Fa-f]+:[0-9A-Fa-f]+$/ or die "bad link position format.\n"
else
hitlist = ndtp.search(ARGV[0], kana)
hitlist.empty? and die "no match.\n"
if hitlist.length > 1 || entry == 0
i = 0
hitlist.each { |e| printf("%2d : %s\n", i += 1, e[0]) }
exit if entry == 0
print "---\n"
end
entry.between?(1, hitlist.length) or die "bad entry No.\n"
link = hitlist[entry-1][1]
end
text = ndtp.get_text(link)
IGNORE_LINK = /♪|\(音\)/
while (expand -= 1) >= 0
text.gsub!(/→(.*)<([0-9A-Fa-f]+:[0-9A-Fa-f]+)>/) do |pat|
label, link = $1, $2
if label =~ IGNORE_LINK
pat
else
"→#{label} " + ndtp.get_text(link).chomp.chomp
end
end
end
SO, SE = "\e[7m", "\e[m"
print text.gsub(/<[0-9A-Fa-f]+:[0-9A-Fa-f]+>/, SO + '\0' + SE)
ndtp.close