Class: Droonga::Catalog::Loader

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

Instance Method Summary collapse

Constructor Details

#initialize(path = nil) ⇒ Loader

Returns a new instance of Loader.



24
25
26
# File 'lib/droonga/catalog/loader.rb', line 24

def initialize(path=nil)
  @path = path
end

Instance Method Details

#loadObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/droonga/catalog/loader.rb', line 28

def load
  unless @path
    raise Error.new("nothing specified")
  end

  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
  parse(data)
end

#parse(data) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/droonga/catalog/loader.rb', line 46

def parse(data)
  unless data.is_a?(Hash)
    raise Error.new("Root element of catalog must be an object in #{@path}: " +
                      "#{JSON.generate(data)}")
  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