class Zlib::Inflate + Zlib::ZStream
クラスの継承リスト: Zlib::Inflate < Zlib::ZStream < Object < Kernel
要約
入力データを展開するストリームのクラス。Zlib::Deflate と違い、 このクラスのインスタンスを複製 (clone, dup) することはできません。
特異メソッド
inflate(string) -> String
-
string を展開します。
ちなみに、このメソッドは以下のコードとほぼ同じです:
def inflate(string) zstream = Zlib::Inflate.new buf = zstream.inflate(string) zstream.finish zstream.close buf end
- [PARAM] string:
- 展開する文字列を指定します。
- [EXCEPTION] Zlib::NeedDict:
- 展開に辞書が必要な場合に発生します。
require 'zlib' cstr = "x\234\313\310OOUH+MOTH\315K\001\000!\251\004\276" p Zlib::Inflate.inflate(cstr) #=> "hoge fuga end"
new(window_bits = Zlib::MAX_WBITS) -> Zlib::Inflate
-
展開ストリームを作成します。
- [PARAM] window_bits:
- ウィンドの大きさを整数で指定します。 nil の場合はデフォルトの値を使用します。 詳細は zlib.h を参照してください。
cstr = "x\234\313\310OOUH+MOTH\315K\001\000!\251\004\276" inz = Zlib::Inflate.new(15) inz << cstr p inz.finish #=> "hoge fuga end"
new -> ()
-
直接使用しません。 通常、具体的な圧縮/展開を行う場合は、 Zlib::Deflate.new もしくは、Zlib::Inflate.new を使用します。
[SEE_ALSO] Zlib::Deflate.new, Zlib::Inflate.new
インスタンスメソッド
self << string -> self
-
Zlib::Inflate#inflate と同じように string を 展開ストリームに入力しますが、Zlib::Inflate オブジェクト そのものを返します。展開ストリームからの出力は、 出力バッファに保存されます。
cstr = "x\234\313\310OOUH+MOTH\315K\001\000!\251\004\276" inz = Zlib::Inflate.new inz << cstr[0, 10] p inz.flush_next_out #=> "hoge fu" inz << cstr[10..-1] p inz.flush_next_out #=> "ga end"
adler -> Integer
-
adler-32 チェックサムを返します。
avail_in -> Integer
-
入力バッファに溜っているデータのバイト数を返します。通常は 0 です。
avail_out -> Integer
-
出力バッファの空き用量をバイト数で返します。 空きは必要な時に動的に確保されるため、通常は 0 です。
avail_out=(size)
-
出力側のバッファに size バイトの空きを確保します。 すでに size バイト以上の空きがある場合、バッファは 縮められます。空きは必要な時に動的に確保されるため、通常 このメソッドを使う必要はありません。
- [PARAM] size:
- 出力バッファのサイズを整数で指定します。
- [RETURN]
- size を返します。
close -> nil
end -> nil
-
ストリームを閉じます。 以後、このストリームにアクセスすることはできなくなります。
closed? -> bool
ended? -> bool
-
ストリームが閉じられている時に真を返します。
data_type -> Fixnum
-
ストリームに入力されたデータの形式を推測します。 返り値は Zlib::BINARY, Zlib::ASCII, Zlib::UNKNOWN の いずれかです。
finish -> String
-
展開ストリームを終了します。
ストリーム内に残っていたデータ (つまり圧縮データの後についていた ゴミデータ) を返します。 Zlib::ZStream#finished? が真でない時に finish を呼ぶと 例外が発生します。
展開ストリームは圧縮データ内に終了コードを発見した時点で 自ら終了するため、明示的に finish を呼ぶ必要は必ずしも ありませんが、このメソッドは圧縮データが正しく終了しているかを 確認するのに便利です。
cstr = "x\234\313\310OOUH+MOTH\315K\001\000!\251\004\276" inz = Zlib::Inflate.new inz << cstr p inz.finish #=> "hoge fuga end"
finish -> String
-
ストリームへの入力を終了し、出力バッファをフラッシュします。 より具体的な振る舞いは Zlib::Deflate#finish, Zlib::Inflate#finish を参照して下さい。
[SEE_ALSO] Zlib::Deflate#finish,Zlib::Inflate#finish
finished? -> bool
stream_end? -> bool
-
ストリームへの入力が終了している時に真を返します。
flush_next_in -> String
-
入力バッファに残っているデータを強制的に取り出します。
flush_next_out -> String
-
出力バッファに残っているデータを強制的に取り出します。
inflate(string) -> String
-
string を展開ストリームに入力します。
処理後、ストリームからの出力を返します。 このメソッドを呼ぶと出力バッファ及び入力バッファは空になります。 string が nil の場合はストリームへの入力を 終了します。(Zlib::ZStream#finish と同じ)。
- [PARAM] string:
- 展開する文字列を入力します。
- [EXCEPTION] Zlib::NeedDict:
- 展開に辞書が必要な場合に発生します。 Zlib::Inflate#set_dictionary メソッドで辞書をセットした 後で、空文字列と共にこのメソッドを再度呼び出して下さい。
cstr = "x\234\313\310OOUH+MOTH\315K\001\000!\251\004\276" inz = Zlib::Inflate.new p inz.inflate(cstr) #=> "hoge fuga end"
reset -> nil
-
ストリームの状態をリセットします。 入力/出力バッファ内に残っていたデータは破棄されます。
set_dictionary(string) -> String
-
展開に用いる辞書を指定します。string を返します。 このメソッドは Zlib::NeedDict 例外が発生した直後のみ 有効です。詳細は zlib.h を参照して下さい。
- [PARAM] string:
- 展開に用いる辞書を文字列で指定します。
def case2(str, dict) dez = Zlib::Deflate.new dez.set_dictionary(dict) comp_str = dez.deflate(str) comp_str << dez.finish comp_str.size inz = Zlib::Inflate.new begin inz.inflate(comp_str) rescue Zlib::NeedDict end # 展開に用いる辞書が必要です。 inz.set_dictionary(dict) p inz.inflate(comp_str) end dict = 'hoge_fuga_ugougo' sset = [ dict, 'taeagbamike', 'ugotagma', 'fugebogya' ] g = [ 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 1, 1, 0, 0, 0, 1, 2, 2, 0, 0, 0, 2, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0] str = g.collect{|m| sset.at(m)}.join("") case2(str, dict)
sync(string) -> bool
-
string を入力バッファの末尾に追加し、次の full flush point まで読み飛ばします。入力バッファ内に full flush point が存在しない場合は、入力バッファを空にし false を返します。 入力バッファ内に full flush point が見つかった場合は true を返し、残りのデータは入力バッファ内に保持されます。
- [PARAM] string:
- 入力バッファの末尾に追加する文字列を指定します。
sync_point? -> bool
-
[TODO] zlib.h にもドキュメントが無い?
What is this?
total_in -> Integer
-
ストリームに入力されたデータの総バイト数を返します。
total_out -> Integer
-
ストリームの出力したデータの総バイト数を返します。