OSDN Git Service

fix Manifest
[pettanr/pettanr.git] / lib / manifest / controller.rb
1 require "manifest/controller/list"
2 require "manifest/controller/show"
3 module Manifest
4   class Controller
5     include ControllerModule
6     def self.manager manifest, my_manifests
7       my_manifests.map {|controller_name, controller_manifest|
8         self.new(manifest, controller_name, controller_manifest)
9       }
10     end
11     
12     class Recipe
13     end
14     
15     attr :manifest, :controller_name, :controller_manifest, :item_name, :actions
16     @@types = {'list' => ActionList, 'show' => ActionShow}
17     def initialize manifest, controller_name, controller_manifest
18       @manifest = manifest
19       @controller_name = controller_name
20       @controller_manifest = controller_manifest
21       self.set_default
22       self.init
23     end
24     
25     def set_default
26       @controller_manifest['item_name'] ||= @controller_name
27       @controller_manifest['actions'] ||= {}
28     end
29     
30     def init
31       @item_name = @controller_manifest['item_name']
32       @actions = {}
33       @controller_manifest['actions'].each {|action_name, action_manifest|
34         raise "undefined class for controllers > #{@controller_name} > actions > #{action_name} > type >  #{action_manifest['type']}\n" unless @@types[action_manifest['type']]
35         @actions[action_name] = @@types[action_manifest['type']].new(self, action_name, action_manifest)
36       }
37     end
38     
39   end
40 end