13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/dsl/file_parser.rb', line 13
def file_parser(file_type,version=nil)
ret = (@loaded_types[file_type]||{})[version]
return ret if ret
unless FileTypes.include?(file_type)
raise Error.new("Illegal file type (#{file_type})")
end
base_path = "#{BaseDirForFileTypes}/#{file_type}"
version ||= default_version(file_type)
path = "#{base_path}/v#{version.to_s}/#{file_type}"
require File.expand_path(path, File.dirname(__FILE__))
base_class = FileParser.const_get(Aux.snake_to_camel_case(file_type.to_s))
ret_class = base_class.const_get("V#{version.to_s}")
input_hash_class = ret_class.const_get "InputHash"
ret = ret_class.new(input_hash_class)
(@loaded_types[file_type] ||= Hash.new)[version] = ret
ret
end
|