Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > zlibライブラリ > Zlib::Inflateクラス > set_dictionary

instance method Zlib::Inflate#set_dictionary

set_dictionary(string) -> String[permalink][rdoc]

展開に用いる辞書を指定します。string を返します。 このメソッドは Zlib::NeedDict 例外が発生した直後のみ 有効です。詳細は zlib.h を参照して下さい。

[PARAM] string:
展開に用いる辞書を文字列で指定します。
require 'zlib'

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)