OSDN Git Service

fix extend
[pettanr/pettanr.git] / lib / manifest / manifest.rb
1 module Manifest
2   class Manifest
3     cattr_accessor :manifest
4     attr :system_resources, :magic_numbers,
5       :items, :controllers, :models, :module_names
6     # call me before load routes.rb
7     # routes.rb needs engine_resources manifest in system_resources
8     # ex. it's adding license_groups routes
9     def initialize global_json
10       @module_names = []
11       @global_json = global_json || {}
12       @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources']))
13       @magic_numbers = @global_json['magic_numbers']
14     end
15     
16     def init
17       # managers can't initialize before load  application.rb
18       return unless defined? ::Pettanr
19       @items = ManifestBase.load_type_name_args(self, @global_json, 'items', ItemFactory)
20       @controllers = Controller.load(self, @global_json, 'controllers')
21       @models = Model.load(self, @global_json, 'models')
22       # 
23       @items.each do |name, peta_manifest|
24         peta_manifest.init_after_load_manifest
25       end
26     end
27     
28     def init_after_load_manifest
29       @system_resources.init
30     end
31     
32     def load_models_manifest
33       @models.each do |model_name, model|
34         model.classify.load_manifest
35       end
36     end
37     
38   end
39   
40   module ModuleMethods
41     def manifest
42       Manifest.manifest
43     end
44     
45     def load global_json
46       Manifest.manifest = Manifest.new global_json
47     end
48     
49     def item_name_to_model item_name
50       item_name.classify.constantize
51     end
52     
53     def singularize name
54       name.singularize
55     end
56     
57     def pluralize name
58       name.pluralize
59     end
60     
61   end
62
63   extend ModuleMethods
64 end
65