class MigemoDictCache

Public Class Methods

new(filename) click to toggle source
# File lib/migemo-dict.rb, line 97
def initialize (filename)
  @dict  = File.new(filename)
  @index = File.new(filename + ".idx").read.unpack "N*"
end

Public Instance Methods

lookup(pattern) click to toggle source
# File lib/migemo-dict.rb, line 112
def lookup (pattern)
  raise if pattern == nil
  pattern = pattern.downcase
  idx = @index.bsearch_first do |_idx|
    key, data = decompose(_idx)
    key <=> pattern
  end
  if idx
    key, data = decompose(@index[idx])
    return data
  else
    nil
  end
end

Private Instance Methods

decompose(idx) click to toggle source
# File lib/migemo-dict.rb, line 102
def decompose (idx)
  @dict.seek(idx)
  keylen = @dict.read(4).unpack("N").first
  key = @dict.read(keylen).unpack("a*").first
  datalen  = @dict.read(4).unpack("N").first
  data     = Marshal.load(@dict.read(datalen))
  return key, data
end