Class: Droonga::CatalogLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/droonga/catalog_loader.rb

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ CatalogLoader

Returns a new instance of CatalogLoader.



23
24
25
# File 'lib/droonga/catalog_loader.rb', line 23

def initialize(path)
  @path = path
end

Instance Method Details

#loadObject



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
# File 'lib/droonga/catalog_loader.rb', line 27

def load
  data = nil
  begin
    data = File.open(@path) do |file|
      JSON.parse(file.read)
    end
  rescue Errno::ENOENT => error
    raise Error.new("Missing catalog file #{@path}")
  rescue JSON::ParserError => error
    raise Error.new("Syntax error in #{@path}:\n#{error.to_s}")
  end

  unless data.is_a?(Hash)
    raise Error.new("Root element of catalog must be an object in #{@path}")
  end

  version = data["version"]
  case version
  when 1
    Catalog::Version1.new(data, @path)
  when 2
    Catalog::Version2.new(data, @path)
  when nil
    raise Error.new("Catalog version must be specified in #{@path}")
  else
    raise Error.new("Unsupported catalog version <#{version}> is specified in #{@path}")
  end
end