Lookupに必要な部分だけでっち上げたdictzipの偽者です。
dictに含まれる、dictzipで圧縮したファイルから部分的にデータを伸長・抽出するプログラムです。 端的に言えばLookupに必要な部分だけでっち上げたdictzipの偽者です。 一応圧縮にも対応しています。
Lookupのndicエージェントは、dictで使用される辞書 (dict辞書) をサポートしています。 dict辞書はインデックスと本文テキストが別ファイルに分離されており、本文テキストについては、dictに含まれるdictzipで圧縮することができます。 dictzipは圧縮したファイルの一部からテキストを抽出することも可能で、Lookupからdictzipで圧縮したテキストにアクセスする際に利用しいています。
ただし、最近のdictや、それが依存するlibmaaは、ビルドの際にbmakeやmk-configureに依存しており、Windows環境でビルドするのが大変になっています。 なので、Lookupで必要なdictzipの部分に限定した、CygwinやMinGW環境でビルドしやすいツールを作ってみました。
通常の autotools を利用したプログラムと同様です。
.emacs等に
(setq ndic-dictzip-program "dzzip")
のように記述してください。 パスが通っていない場合はパス名を含めてください。
dictzipにあるオプションのうち、-p, -P, -t, -lについては実装されていない為、エラーで終了します。
-Cオプションで、圧縮前のチャンクの大きさを指定できます。 dictzip圧縮の仕様上、上限は65535バイトになります。 下限ついては仕様上の制限はありませんが、dzzipでは1024バイトにしています。 dictzip圧縮では、圧縮後のチャンクの大きさも65535バイトまでに制限されます。 ですので、圧縮効率があまりに悪いデータに対して大きなチャンクを指定すると、理論上は圧縮に失敗する可能性があります。 ただし、テキストファイルでこの問題が起きることはまずないと思います。
-Dオプションについては、引数はとりません。
-D, -vオプションについては、出力される内容はdictzipとは異なります。
-s, -S, -e, -E, -cオプションのいずれか指定されると、, -kオプションも暗黙のうちに指定されます。
dzzipによる圧縮では圧縮ファイルに圧縮前のファイル名は収納されません。
前述の通り、圧縮時にチャンクの大きさを変更できます。dictzipでは58315バイトに固定されています。
プログラムのライセンスは修正BSDライセンスに従います。 同梱のCOPYINGファイルを参照して下さい。
2019/08/11 公開。