OSDN Git Service

fix has one manifest
[pettanr/pettanr.git] / lib / manifest / manifest.rb
1 module Manifest
2   class Manifest
3     cattr_accessor :manifest
4     attr :system_resources, :magic_numbers,
5       :controllers, :models, 
6       :list_groups, :profilers, :filers, :forms
7     # call me before load routes.rb
8     # routes.rb needs engine_resources manifest in system_resources
9     # ex. it's adding license_groups routes
10     def initialize manifest
11       @manifest = manifest || {}
12       @system_resources = SystemResource.new(self, SystemResource.set_default(@manifest['system_resources']))
13       @magic_numbers = @manifest['magic_numbers']
14     end
15     
16     def init
17       # managers can't initialize before load  application.rb
18       return unless defined? ::Pettanr
19       @controllers = Controller.manager(self, @manifest['controllers'] || {})
20       @models = Model.manager(self, @manifest['models'] || {})
21       @locals = @manifest['locals']
22       @list_groups = ListGroup.manager(self, @locals['list_groups'] || {})
23       @filers = Filer.manager(self, @locals['filers'] || {})
24       @profilers = Profiler.manager(self, @locals['profilers'] || {})
25       @forms = Form.base_manager(self, @locals['forms'] || {})
26       @forms.merge(Form.extend_manager(self, @locals['forms'] || {}))
27       @system_resources.init
28     end
29     
30   end
31   
32   module ModuleMethods
33     def manifest
34       Manifest.manifest
35     end
36     
37     def load json
38       Manifest.manifest = Manifest.new json
39     end
40     
41     def item_name_to_model item_name
42       item_name.classify.constantize
43     end
44     
45     def singularize name
46       name.singularize
47     end
48     
49     def pluralize name
50       name.pluralize
51     end
52     
53   end
54
55   extend ModuleMethods
56 end
57