Class: Droonga::Catalog::Loader
- Inherits:
-
Object
- Object
- Droonga::Catalog::Loader
- Defined in:
- lib/droonga/catalog/loader.rb
Instance Method Summary collapse
-
#initialize(path = nil) ⇒ Loader
constructor
A new instance of Loader.
- #load ⇒ Object
- #parse(data) ⇒ Object
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
#load ⇒ Object
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 |