[#4754] Now,I am starting ruby. — mamoru@... (Mamoru Matushita)

先日、初めて投稿したつもりだったのですが間違えて

14 messages 1997/10/02

[#4891] mixin - singleton method inheritance, const etc... — shugo@... (Shugo Maeda)

前田です。

13 messages 1997/10/10

[#5000] ruby 1.0-971015 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

14 messages 1997/10/15

[#5056] RubyでOODB — hisanori@...

松尾です。

20 messages 1997/10/20
[#5057] Re: RubyでOODB — matz@... (Yukihiro Matsumoto) 1997/10/20

まつもと ゆきひろです

[#5065] Re: RubyでOODB — hisanori@... 1997/10/20

松尾です。

[#5066] Re: RubyでOODB — matz@... (Yukihiro Matsumoto) 1997/10/20

まつもと ゆきひろです

[ruby-list:5054] man reader for dos

From: sakamoto@... (Sadayuki Sakamoto)
Date: 1997-10-20 00:51:11 UTC
List: ruby-list #5054
酒本です。

普段、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


In This Thread

Prev Next