OSDN Git Service

temp
[pettanr/pettanr.git] / lib / manifest / manifest.rb
1
2 module Pettanr
3   class Manifest
4     class Controller
5       attr :item_name, :conf, :manifest, :model_name, :actions
6       def initialize item_name, conf, manifest
7         @item_name = item_name
8         @conf = conf || {}
9         @manifest = manifest
10         @model_name = @conf['model_name']
11         @actions = @conf['actions'] || {}
12       end
13       
14       def list_name action_name
15         a = @actions[action_name] || {}
16         l = a['list'] || {}
17         l['list_name']
18       end
19       
20     end
21     
22     class Model
23       attr :item_name, :conf, :manifest, :attributes, :associations, :belongs_to, :has_many, :has_one
24       def initialize item_name, conf, manifest
25         @item_name = item_name
26         @conf = conf || {}
27         @manifest = manifest
28         
29         @attributes = @conf['attributes']
30         @associations = @conf['associations'] || {}
31         @belongs_to = @associations['belongs_to'] || {}
32         @has_many = @associations['has_many'] || {}
33         @has_one = @associations['has_one'] || {}
34       end
35       
36     end
37     
38     class List
39       attr :item_name, :conf, :manifest, :default_page_size, :lists
40       def initialize item_name, conf, manifest
41         @item_name = item_name
42         @conf = conf || {}
43         @manifest = manifest
44         @default_page_size = @conf['default_page_size'] || 20
45         @lists = @conf['lists'] || {}
46       end
47       
48     end
49     
50     class SystemResources
51       attr :conf, :licenses, :elements, :speech_balloon_templates, :writing_formats
52       def initialize system_resource_conf
53         @conf = system_resource_conf || {}
54         @licenses = @conf['licenses'] || {}
55         @elements = @conf['elements'] || {}
56         @speech_balloon_templates = @conf['speech_balloon_templates'] || {}
57         @writing_formats = @conf['writing_formats'] || {}
58       end
59       
60     end
61     
62     class Profiler
63       attr :item_name, :conf, :manifest, :columns, :lists, :belongs_to, :has_many, :has_one
64       def initialize item_name, conf, manifest
65         @item_name = item_name
66         @conf = conf || {}
67         @manifest = manifest
68         @columns = @conf['columns'] || {}
69         @lists = @conf['lists'] || {}
70         @associations_conf = @conf['associations'] || {}
71         @belongs_to = @associations_conf['belongs_to'] || []
72         @has_many = @associations_conf['has_many'] || []
73         @has_one = @associations_conf['has_one'] || []
74       end
75       
76     end
77     
78     class Filer
79       attr :item_name, :conf, :manifest, :icon, :symbol, :caption, :summary, :date, :edit
80       def initialize item_name, conf, manifest
81         @item_name = item_name
82         @conf = conf || {}
83         @manifest = manifest
84         @symbol = @conf['symbol']
85         @caption = @conf['caption']
86         @summary = @conf['summary']
87         @icon = @conf['icon']
88         @date = @conf['date']
89         @edit = @conf['edit']
90       end
91       
92     end
93     
94     class Form
95       attr :item_name, :conf, :manifest, :icon, :symbol, :caption, :summary, :date, :edit
96       def initialize item_name, conf, manifest
97         @item_name = item_name
98         @conf = conf || {}
99         @manifest = manifest
100       end
101       
102     end
103     
104     attr :system_resources, :magic_numbers, :select_items,
105       :controller_managers, :model_managers, :list_managers, :profiler_managers, :filer_managers, :form_managers
106     def initialize manifest
107       @manifest = manifest || {}
108       @system_resources = SystemResources.new(@manifest['system_resources'])
109       @magic_numbers = @manifest['magic_numbers']
110       @select_items = @manifest['select_items']
111       @controllers = {}
112       @models = {}
113       @lists = {}
114       @profilers = {}
115       @filers = {}
116       @forms = {}
117       @controller_managers = {}
118       @model_managers = {}
119       @list_managers = {}
120       @profiler_managers = {}
121       @filer_managers = {}
122       @form_managers = {}
123       (@manifest['controllers'] || {}).each {|item_name, controller_conf|
124         @controllers[item_name] = Controller.new(item_name, controller_conf, self) 
125         @controller_managers[item_name] = Pettanr::ControllerManager.new @controllers[item_name]
126       }
127       (@manifest['models'] || {}).each {|item_name, model_conf|
128         @models[item_name] = Model.new(item_name, model_conf, self) 
129         @model_managers[item_name] = Pettanr::ModelManager.new @models[item_name]
130       }
131       (@manifest['lists'] || {}).each {|item_name, list_conf|
132         @lists[item_name] = List.new(item_name, list_conf, self) 
133         @list_managers[item_name] = Pettanr::ListManager.new @lists[item_name]
134       }
135       @locals = @manifest['locals'] || {}
136       (@locals['profilers'] || {}).each {|item_name, profiler_conf|
137         @profilers[item_name] = Profiler.new item_name, profiler_conf, self
138         @profiler_managers[item_name] = Pettanr::ProfilerManager.new @profilers[item_name]
139       }
140       (@locals['filers'] || {}).each {|item_name, filer_conf|
141         @filers[item_name] = Filer.new item_name, filer_conf, self
142         @filer_managers[item_name] = Pettanr::FilerManager.new @filers[item_name]
143       }
144       (@locals['forms'] || {}).each {|item_name, form_conf|
145         @forms[item_name] = Form.new item_name, form_conf, self
146         @form_managers[item_name] = Pettanr::FormManager.new @forms[item_name]
147       }
148     end
149     
150     def controller item_name
151       @controllers[item_name] || @mcontrollers[item_name.tableize]
152     end
153     
154     def model item_name
155       @models[item_name] || @models[item_name.tableize]
156     end
157     
158     def list item_name
159       @lists[item_name] || @lists[item_name.tableize]
160     end
161     
162     def profiler item_name
163       @profilers[item_name] || @profilers[item_name.tableize]
164     end
165     
166     def filer item_name
167       @filers[item_name] || @filers[item_name.tableize]
168     end
169     
170     def form item_name
171       @forms[item_name] || @forms[item_name.tableize]
172     end
173     
174   end
175   
176 end
177