Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::Deflateクラス > set_dictionary
set_dictionary(string) -> String
[permalink][rdoc]圧縮に用いる辞書を指定します。string を返します。 このメソッドは Zlib::Deflate.new, Zlib::ZStream#reset を呼び出した直後にのみ有効です。詳細は zlib.h を参照して下さい。
def case1(str) dez = Zlib::Deflate.new comp_str = dez.deflate(str) comp_str << dez.finish comp_str.size end def case2(str, dict) dez = Zlib::Deflate.new p dez.set_dictionary(dict) comp_str = dez.deflate(str) comp_str << dez.finish comp_str.size end i = 10 dict = 'hoge_fuga_ugougo' sset = [ dict, 'taeagbamike', 'ugotagma', 'fugebogya' ] g = [ 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] str = (1..i).collect{|m| t = rand(g.size); sset.at(g[t])}.join("") printf "%d normal:%d, dict:%d\n", i, case1(str), case2(str, dict)