1 require "manifest/model/attribute"
2 require "manifest/model/association"
3 require "manifest/model/list"
10 def self.manager manifest, my_manifests
11 my_manifests.map {|model_name, model_manifest|
12 self.new(manifest, model_name, model_manifest)
17 'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
18 'has_many' => HasManyList, 'has_many_through' => HasManyThroughList, 'filter' => FilterList,
19 'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList,
22 attr :model_name, :model_manifest
23 def initialize manifest, model_name, model_manifest
25 @model_name = model_name
26 @model_manifest = model_manifest
32 @model_manifest['attributes'] ||= {}
33 @model_manifest['associations'] ||= {}
34 @model_manifest['lists'] ||= {}
39 @model_manifest['attributes'].each {|attribute_name, attribute_manifest|
40 raise "undefined type for models > #{@model_name} > attributes > #{attribute_name}\n" unless attribute_manifest['type']
41 @attributes[attribute_name] = Attribute.new(self, attribute_name, attribute_manifest)
44 @model_manifest['associations'].each {|association_name, association_manifest|
45 @associations[association_name] = Association.new(self, association_name, association_manifest)
48 @model_manifest['lists'].each {|list_name, list_manifest|
49 type = list_manifest['type']
50 raise "undefined type for models > #{@model_name} > lists > #{list_name}\n" unless type
52 raise "undefined class for models > #{@model_name} > actions > #{list_name} > type > #{type}\n" unless list
53 @lists[list_name] = list.new(self, list_name, list_manifest)