OSDN Git Service

separate manifest
[pettanr/pettanr.git] / lib / local_manifest / list_group / list.rb
diff --git a/lib/local_manifest/list_group/list.rb b/lib/local_manifest/list_group/list.rb
new file mode 100644 (file)
index 0000000..4976af9
--- /dev/null
@@ -0,0 +1,35 @@
+require_dependency "local_manifest/list_group/list/base"
+require_dependency "local_manifest/list_group/list/public"
+require_dependency "local_manifest/list_group/list/private"
+require_dependency "local_manifest/list_group/list/system_resource"
+require_dependency "local_manifest/list_group/list/filter"
+require_dependency "local_manifest/list_group/list/through_filter"
+require_dependency "local_manifest/list_group/list/foreign_filter"
+require_dependency "local_manifest/list_group/list/play"
+module LocalManifest
+  module ListGroupModule
+    class ListFactory
+      include ListModule
+      
+      def self.types
+        {
+          'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
+          'filter' => FilterList, 'through_filter' => ThroughFilterList, 'foreign_filter' => ForeignFilterList, 
+          'play' => PlayList
+        }
+      end
+      
+      def self.factory list_group, list_name, my_manifest
+        my_manifest['type'] ||=  'public'
+        type = my_manifest['type']
+        raise "undefined type for list_groups > #{list_group.item_name} > #{list_name}\n" unless type
+        my_class = self.types[type]
+        raise "undefined class for list_groups > #{list_group.item_name} > #{list_name} > #{type}\n" unless my_class
+        my_class.new(list_group, list_name, my_manifest)
+      end
+      
+    end
+  end
+  
+end
+