OSDN Git Service

merge
[pettanr/pettanr.git] / lib / manifest / list_group / list.rb
1 require_dependency "manifest/list_group/list/base"
2 require_dependency "manifest/list_group/list/public"
3 require_dependency "manifest/list_group/list/private"
4 require_dependency "manifest/list_group/list/system_resource"
5 require_dependency "manifest/list_group/list/filter"
6 require_dependency "manifest/list_group/list/through_filter"
7 require_dependency "manifest/list_group/list/foreign_filter"
8 require_dependency "manifest/list_group/list/play"
9 module Manifest
10   module ListGroupModule
11     class ListFactory
12       include ListModule
13       
14       def self.types
15         {
16           'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
17           'filter' => FilterList, 'through_filter' => ThroughFilterList, 'foreign_filter' => ForeignFilterList, 
18           'play' => PlayList
19         }
20       end
21       
22       def self.factory list_group, list_name, my_manifest
23         my_manifest['type'] ||=  'public'
24         type = my_manifest['type']
25         raise "undefined type for list_groups > #{list_group.item_name} > #{list_name}\n" unless type
26         my_class = self.types[type]
27         raise "undefined class for list_groups > #{list_group.item_name} > #{list_name} > #{type}\n" unless my_class
28         my_class.new(list_group, list_name, my_manifest)
29       end
30       
31     end
32   end
33   
34 end
35