林@守口市です。まつもとさんのお作りになったものに日頃よりお世話になっ
ておりますのに、rubyに関しては、最近まで全く知りませんでした。存在を知っ
てからちょっと夢中になってしまってます。とにかく言語は書いてみるのがい
いのだと思いまして、四苦八苦コーディングしてみましたが、可読性がいいこ
とやシンプルさをより感じました。
いきなりコードを皆さんに見ていただくのも不躾ですがご批判や感想いただけ
ればうれしいです。といっても、これじゃあまりPerlと変りなくOOPを生かし
ていないですね、正規表現の使いかたも変かもしれません。スタイルも教えて
ください。
-------- 以下コード --------
# HTMLマニュアルの、<A HREF> タグから索引を作る
# ソースは、ruby-man-1.0-jp を対象にしています
# usage: ruby this.rb *.html > sakuin.html
# 環境 WIN95 Cygwin32 b18 rbgw1021バイナリー
# hayashi / mxs.meshnet.or.jp Sat Nov 8 1997
$ary = Array.new
while gets()
$_ = Kconv.tosjis($_) # うちの環境では、これが必要
if /(<A HREF=")([^"]*)(".*<\/A>)/i
$_ = $1 + $3
mark = $2
fname = $<.filename
fname.gsub!(/^.*\//, '')
gsub(/<\/A>.*$/, '')
while /<[\/A-Za-z][^>]*>/
gsub(/<[\/A-Za-z][^>]*>/, '')
end
while />/; gsub('>', '>') end
while /</; gsub('<', '<') end
while /&/; gsub('&', '&') end
$_.strip!
unless
/^目次$/ || /^次$/ || /^前$/ || /^上$/ || /@.*\./ || /^$/
# 不必要なタグを除く
if mark =~ /^#/ # 自ファイル内のジャンプなら
mark = fname + mark # ファイル名をつける
end
$ary << $_ + "\t" + mark
end
end
end
$ary.sort!
print "<HTML><HEAD><CENTER>ruby マニュアルの索引</CENTER></HEAD><BODY>\n"
$ary.each{|val|
val =~ /(.*)\t(.*)/
printf "<A HREF=\"%s\">%s</A><BR>\n", $2, $1 unless val == $old
$old = val
}
print "</BODY></HTML>\n"
--
|_| /|V /|( |_||[Sagasen] MAIL: hayashi / mxs.meshnet.or.jp |V| |
| |/~||/~| )| || http://www2a.meshnet.or.jp/~hayashi/search/ | |ORIGUT|