酒本です。 普段、Win95のDOS窓で遊んでいますが、会社も自宅もマシンが486-66MHzですので ちょっとマニュアルをみたくてもブラウザを立ち上げるのが面倒です。 そこでhtmlのドキュメントを直に見ればと思ったら当然SJISでないのでそのままでは 見れませんでした。そこで、Kconvを使ってrubyのマニュアルを見るツールを 書いてみましので、ご紹介します。こんなイメージです。 しかし元の文書がタグを除くだけで読めるからこのツールがつかえるのですね。 -----------------出力のサンプル C:\Usr\bin\ruby\man>ruby a.rb index~1.htm Ruby Language Reference Manual オブジェクト指向スクリプト言語 ruby リファレンスマニュアル version 1.0 まつもと ゆきひろ matz / ruby.club.or.jp ---------------------------------------- 目次 {1}* はじめに {2}* コマンドラインオプション {3}* rubyの文法 * 標準ライブラリ {4}* 組込み関数 {5}* 組込み変数 {6}* 組込み定数 {7}* 組込みクラス {8}* 組込みモジュール {9}* 添付ライブラリ {10}* 疑似BNFによるrubyの文法 {11}* ruby用語集 ---------------------------------------- Last modified: Fri Apr 11 18:31:52 1997 [qbt]: -----------------出力のサンプルEND 使用法: 第1パラメータにhtmlファイルを指定します。 単に<cr>(改行キー)で次のページを表示します。 {}の部分はその番号<cr>でそのリンクにジャンプ(call)します。 b <cr>でリンク元に戻ります。 t <cr>でページの先頭に跳びます。 q <cr>で終了します。 制限: Kconv::tosjis決めうちなのでDOS窓にしか対応してません。 ファイルの存在チェックその他異常処理を全く考えていません。 ドキュメントファイルのあるところでしか動きません。 まだ、おもちゃです。 ------------ 8<---------ここから def pause() print "[qbt]:" cmd = $stdin.gets.chop! case cmd when '' return 'n' when /[qbt]/ return cmd when /[0-9]+/ num = cmd.to_i if $h.has_key?(num) then $stack.push($f) $f = $h[num] return 'l' end return 'n' else return 'n' end end def page(fn) fn.gsub!(/#(.+)/,'') name = $1 f = open(fn) cnt = 0 lc = 1 $h = Hash.new while s = f.gets if name then if /<A NAME="([^"]+)"/i then if $1 == name then name = nil else next end else next end end if cnt > 22 then c = pause() if c != 'n' then f.close return c end cnt = 0 end sj = Kconv::tosjis(s) sj.chop! sj.gsub!(/<hr>/i, '-' * 40 ) sj.gsub!(/<li>/i,'* ') sj.sub!(/<A HREF="([^@>"]+)">/i,'') if $1 != nil then print '{'+lc.to_s+'}' $h[lc] = $1 lc = lc + 1 end sj.gsub!(/\<[^<>]+\>/,'') next if sj =~ /^[ \t]*$/ print sj,"\n" cnt += 1 end f.close pause() end #------------ # main #------------ $f = ARGV[0] $stack = [] while c = page($f) case c when 'q' break when 'b' $f = $stack.pop if $f == nil then break end end end ------------ 8<--------- #古い話ですが、セミナーではお世話になりました。セミナーも後のみーティングも楽 しかったです。 -- Sadayuki Sakamoto sakamoto / tsc.sjk.kdd.co.jp