OSDN Git Service

add binder
[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     def load_models_manifest
31       @models.each do |model_name, model|
32         model.classify.load_manifest
33       end
34     end
35     
36   end
37   
38   module ModuleMethods
39     def manifest
40       Manifest.manifest
41     end
42     
43     def load json
44       Manifest.manifest = Manifest.new json
45     end
46     
47     def item_name_to_model item_name
48       item_name.classify.constantize
49     end
50     
51     def singularize name
52       name.singularize
53     end
54     
55     def pluralize name
56       name.pluralize
57     end
58     
59   end
60
61   extend ModuleMethods
62 end
63