OSDN Git Service

fix remove tree
[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     end
23     
24     def system_resources_init
25       @system_resources.init
26     end
27     
28     def load_models_manifest
29       @models.each do |model_name, model|
30         model.classify.load_manifest
31       end
32     end
33     
34   end
35   
36   module ModuleMethods
37     def manifest
38       Manifest.manifest
39     end
40     
41     def load global_json
42       Manifest.manifest = Manifest.new global_json
43     end
44     
45     def item_name_to_model item_name
46       item_name.classify.constantize
47     end
48     
49     def singularize name
50       name.singularize
51     end
52     
53     def pluralize name
54       name.pluralize
55     end
56     
57   end
58
59   extend ModuleMethods
60 end
61