This file is indexed.

/usr/lib/ruby/1.8/migemo-dict.rb is in migemo 0.40-10.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#
# Ruby/Migemo - a library for Japanese incremental search.
#
# Copyright (C) 2001 Satoru Takabayashi <satoru@namazu.org>
#     All rights reserved.
#     This is free software with ABSOLUTELY NO WARRANTY.
#
# You can redistribute it and/or modify it under the terms of 
# the GNU General Public License version 2.
#
# NOTE: Ruby/Migemo can work only with EUC_JP encoding. ($KCODE="e")
#

require 'bsearch'

class String
  def prefix_match (string)
    self[0, string.length] <=> string
  end
end

class MigemoDictItem
  def initialize(key, values)
    @key = key
    @values = values
    raise if @key == nil
    raise if @values == nil
  end

  attr_reader :key
  attr_reader :values
end

class MigemoDict
  def initialize (filename)
    @dict  = File.new(filename)
  end

  private
  def decompose (line)
    array = line.chomp.split("\t").delete_if do |x| x == nil end
    key = array.shift
    values = array
    raise if key == nil
    raise if values == nil
    return key, values
  end

  public
  def lookup (pattern)
    pattern = pattern.downcase
    raise "nil pattern" if pattern == nil
  end
end

class MigemoStaticDict < MigemoDict
  def initialize (filename)
    super(filename)
    @index = File.new(filename + ".idx").read.unpack "N*"
  end

  private
  def get_line (index)
    @dict.seek(index)
    @dict.gets
  end

  public
  def lookup (pattern)
    range = @index.bsearch_range do |idx| 
      key, values = decompose(get_line(idx))
      key.prefix_match(pattern)
    end
    if range 
      range.each do |i| 
	key, values = decompose(get_line(@index[i]))
	yield(MigemoDictItem.new(key, values)) 
      end
    end
  end
end

class MigemoUserDict < MigemoDict
  def initialize (filename)
    super(filename)
    @lines = @dict.readlines.delete_if {|x| /^;/ =~ x}.sort
  end

  def lookup (pattern)
    range = @lines.bsearch_range do |line| 
      key, values = decompose(line)
      key.prefix_match(pattern)
    end
    if range 
      range.each do |i| 
	key, values = decompose(@lines[i])
	yield(MigemoDictItem.new(key, values)) 
      end
    end
  end
end

class MigemoRegexDict < MigemoUserDict
end

class MigemoDictCache
  def initialize (filename)
    @dict  = File.new(filename)
    @index = File.new(filename + ".idx").read.unpack "N*"
  end

  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
  private :decompose

  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
end