OSDN Git Service

ad044baed8ca500a7d302b0bc333b332ec89c421
[pettanr/pettanr.git] / app / assets / javascripts / manifest / manifest.js.coffee
1 class Manifest\r
2   _module_names = null\r
3   \r
4   module_names: () ->\r
5     _module_names\r
6   \r
7   init: () ->\r
8     # managers can't initialize before load  application.rb\r
9     @inflectors = @global_json.inflectors\r
10     @item_names = {}\r
11     @table_names = {}\r
12     _this = this\r
13     _.each @inflectors, (table_name, item_name) ->\r
14       _this.item_names[item_name] = table_name  # monkey copy\r
15       _this.table_names[table_name] = item_name\r
16     @items = ManifestBase.load_type_name_args(this, @global_json, 'items', Manifest.ItemFactory)\r
17     @controllers = Manifest.Controller.load(this, @global_json, 'controllers', Manifest.Controller)\r
18     @models = Manifest.Model.load(this, @global_json, 'models', Manifest.Model)\r
19     @replace_action_alias()\r
20     true\r
21   \r
22   replace_action_alias: () ->\r
23     replaces = {}\r
24     _.each @controllers, (controller_manifest, controller_name) ->\r
25       _.each controller_manifest.actions, (action_manifest, action_name) ->\r
26         return if not action_manifest.alias\r
27         alias_action = action_manifest.alias_action()\r
28         return if alias_action.type != action_manifest.type\r
29         args = {}\r
30         _.each action_manifest.a_arg_names(), (name) ->\r
31           args[name] = action_manifest[name] || alias_action[name]\r
32         _.each action_manifest.b_arg_names(), (name) ->\r
33           args[name] = alias_action[name] || action_manifest[name]\r
34         args.original = action_manifest\r
35         json = {type: alias_action.type, args: args}\r
36         new_action_manifest = Manifest.ControllerModule.ActionFactory.factory(\r
37           controller_manifest, action_manifest.name, json, \r
38           action_manifest.module_name, Manifest.ControllerModule.ActionFactory\r
39         )\r
40         replaces[controller_name] ||= {}\r
41         replaces[controller_name][action_name] = new_action_manifest\r
42     _.each replaces, (controller, controller_name) ->\r
43       _.each controller, (action_manifest, action_name) ->\r
44         Manifest.manifest().controllers[controller_name].actions[action_name] = action_manifest\r
45   \r
46   pluralize: (item_name) ->\r
47     @item_names[item_name]\r
48   \r
49   singularize: (table_name) ->\r
50     @table_names[table_name]\r
51   \r
52   @item_name_to_model: (item_name) ->\r
53     Pettanr[Pettanr.camelize(item_name)]\r
54   \r
55   @manifest: () ->\r
56     @mani\r
57   \r
58   @set_manifest: (manifest) ->\r
59     @mani = manifest\r
60   \r
61   constructor: (global_json) ->\r
62     _module_names = []\r
63     @global_json = global_json || {}\r
64     @system_resources = new Manifest.SystemResource(\r
65       this, Manifest.SystemResource.set_default(@global_json['system_resources'])\r
66     )\r
67     @magic_numbers = @global_json['magic_numbers']\r
68     @items = {}\r
69     @controllers = {}\r
70     @models = {}\r
71   \r
72 @Manifest = Manifest\r