OSDN Git Service

fix extend for profiler
[pettanr/pettanr.git] / lib / manifest_base / factory.rb
1 module ManifestBase
2   class Factory
3     def self.types
4       {}
5     end
6     
7     def self.default_type
8       nil
9     end
10     
11     def self.factory parent, name, json, module_name
12       module_message = ManifestBase.module_message(parent.module_names, [module_name, name])
13       json['type'] ||= self.default_type
14       type = json['type']
15       alert_undefined_message 'type', module_message unless type
16       my_class = self.types[type]
17       alert_undefined_message 'class', module_message unless my_class
18       my_class.new(parent, name, json, module_name)
19     end
20     
21     def self.factory_type_args parent, json, module_name
22       module_message = ManifestBase.module_message(parent.module_names, [module_name])
23       json['type'] ||= self.default_type
24       type = json['type']
25       alert_undefined_message 'type', module_message unless type
26       my_class = self.types[type]
27       alert_undefined_message 'class', module_message unless my_class
28       my_class.new(parent, json, module_name)
29     end
30     
31   end
32 end
33