Ruby EB 拡張ライブラリ
概要
EPWING/EBなどのCD-ROM 書籍にアクセスするための関数を集めた、C 言語のライブラリ
「EB」
をrubyから利用するための拡張ライブラリです。EBについて詳しくは配布元である
こちら
のページへどうぞ。EBの作者はMotoyuki Kasaharaさんです。
利用には当然EBが正しくインストールされている必要があります。
EBが漢字コードとしてEUCを要求しますので、$KCODEはEUCでお願いします。
EB自身がGPLのため、本Ruby拡張ライブラリもGPLとします。
実はこの文章は
こちら
の笠原氏の文章のパクリの部分が多々あります。どうもすみません。
Book#search2系、Book#content,フック関連、Positionクラスなどは黒田様からのパッチに拠るところが大きいです。どうもありがとうございました。
module EB
- errorcode
- ebでエラーが発生したときセットされます。
- error_message
- errorcodeを文字列にしたものを返します
EB::Book
クラスメソッド
- new
メソッド
- bind
- オブジェクトを、パス path にある CD-ROM 書籍に結び付けます。パスは書籍のトップディレクトリ、つまり `CATALOG' か `CATALOGS' ファイルのあるディレクトリでなくてはなりません。
- suspend
- オブジェクトが現在選択中のもの、すなわち、選択中の副本、言語、フォントの高さをすべて未選択にします
- bound?
- 書籍に結び付いているかどうかを調べます。
- disctype
- ディスクの形式を返します。 オブジェクトはあらかじめ書籍に結び付いていなければなりません。
- path
- 書籍のパスを返します。 オブジェクトはあらかじめ書籍に結び付いていなければなりません。
- charcode
- 書かれている文字コードを返します。 オブジェクトはあらかじめ書籍に結び付いていなければなりません。
- subbook_count
- オブジェクト内の副本の数を返します。オブジェクトは、あらかじめ書籍に結び付けられていなくてはなりません。
- subbook_list
- 副本のリストを作成して副本コードの配列として返します。ここで得られる副本コードを用いて、set(subbook)/title/directoryメソッドにおいて副本を指定します。
- title(subbook=currently)
- 現在選択中の副本の題名を返します。あらかじめ、オブジェクト内のいずれかの副本が選択されていなくてはなりません。
- 引数を省略すると、現在選択されている副本の題名を返します。
- directory(subbook=currently)
- 現在選択中の副本のディレクトリ名を返します。あらかじめ、オブジェクト内内のいずれかの副本が選択されていなくてはなりません。
- 引数を省略すると、現在選択されている副本のディレクトリを返します。
- set(subbook) : alias subbook=
- 副本を選択します。
- subbook
- 現在選択中の副本の副本コードを返します。あらかじめ、オブジェクト内のいずれかの副本が選択されていなくてはなりません。
- unset
- 副本の選択を解除します。
- search_available?
- 現在選択中の副本が前方一致検索メソッドを持っているかどうか調べます。
- 副本が選択されていない場合はRuntimeErrorをraiseします。
- exactsearch_available?
- 現在選択中の副本が完全一致検索メソッドを持っているかどうか調べます。
- 副本が選択されていない場合はRuntimeErrorをraiseします。
- endsearch_available?
- 現在選択中の副本が後方一致検索メソッドを持っているかどうか調べます。
- 副本が選択されていない場合はRuntimeErrorをraiseします。
- search(word,max=all)
- wordをキーとして前方一致検索を行い、結果を配列に入れて返します。配列の各要素は[ heading, text ]として与えられます。
- イテレータとして用いると、[heading,text]の配列をyieldします。返り値としてEB::Cancelを与えると、イテレートを終了します。
- exactsearch(word,max=all)
- wordをキーとして完全一致検索を行い、結果を配列に入れて返します。配列の各要素は[ heading, text ]として与えられます。
- イテレータとして用いると、[heading,text]の配列をyieldします。返り値としてEB::Cancelを与えると、イテレートを終了します。
- endsearch(word,max=all)
- wordをキーとして後方一致検索を行い、結果を配列に入れて返します。配列の各要素は[ heading, text ]として与えられます。
- イテレータとして用いると、[heading,text]の配列をyieldします。返り値としてEB::Cancelを与えると、イテレートを終了します。
- search2(word,max=all)
- exactsearch2(word,max=all)
- endsearch2(word,max=all)
- この3つはそれぞれ、search/exactsearch/endsearchと同じですが、配列に入れたりyieldするものが異なります。
- イテレートとして用いると、[結果のEB::Positionインスタンス,検索語]をyieldします。そうでない場合は、同じ物を配列に入れて返します。
- content(position)
- positionはEB::Positionのインスタンスです。
- positionで示される位置の辞書の内容を返します。
- register_hook(hook,proc)
- register_hook(hook){|buff,argv| proc }
- イベント発生時に呼ばれるメソッドを設定します。hookに与える定数は、EB::の下に定数として定義されています。"EB::定数"の項参照。
EB::Position
クラスメソッド
- new(page,offset)
- ページとオフセットからEB_Positionを設定します。
属性
読み書き可能です。
- page
- offset
EB::定数
すみませんが、eb.cの最後の方の定義を見て下さい。
例
require "eb"
b=EB::Book.new
b.bind("/cdrom")
b.subbook=0
b.exactsearch( "じしょ" ) do |word,desc|
print "====================¥n"
print "== ",word,"¥n"
print "¥n",desc,"¥n"
# EB::Cancel # yield will be stopped
end
例2
require "eb"
b=EB::Book.new
b.bind("/cdrom")
b.subbook=0
b.exactsearch2( "じしょ" ) do |pos,word|
print "====================¥n"
print "== ",word,"¥n"
print "¥n",b.content(pos),"¥n"
# EB::Cancel # yield will be stopped
end
履歴
- v1.4(再) 2000/06/26 折田様のパッチにより、人を惑わすextconf.rbを修正。
- v1.4 2000/06/23 search2系、イテレータ使用時のキャンセルが効くように
- v1.3 2000/06/22 黒田様からの再パッチ。活動時間の差異によるタイミングずれが....
- v1.2 2000/06/22 v1.1への修正。メソッド追加、機能整理など。(未公開)
- v1.1 2000/06/21 黒田様からのパッチによるsearch2系、Position、フック(未公開)
- v1.0 2000/04/10 初版