OSDN Git Service

fix manifest list_group tree
authoryasushiito <yas@pen-chan.jp>
Thu, 27 Feb 2014 02:08:53 +0000 (11:08 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 27 Feb 2014 02:08:53 +0000 (11:08 +0900)
lib/manifest/list_group/list/includes/auto.rb
lib/manifest/model.rb
lib/manifest/model/tree.rb [new file with mode: 0644]

index e61dd32..ff5a03b 100644 (file)
@@ -12,25 +12,13 @@ module Manifest
           def init
             super
             @tree_name = @args['tree_name']
-            if @tree_name
-              @parent_model_manifest = @list.model_manifest.tree_model_manifest(@tree_name)
-              if @parent_model_manifest
-                @parent_model_name = @parent_model_manifest.classify.item_name
-                @root_model_manifest = @parent_model_manifest.tree_model_manifest(@tree_name)
-                if @root_model_manifest
-                  @root_model_name = @root_model_manifest.classify.item_name
-                end
-              end
-            end
           end
           
           def includes
-            if @parent_model_name
-              if @root_model_name
-                {@parent_model_name => {@root_model_name => {}}}
-              else
-                {@parent_model_name => {}}
-              end
+            model_manifest = ::Manifest.manifest.models[self.item_name]
+            tree_manifest = model_manifest.tree[self.tree_name]
+            if tree_manifest
+              tree_manifest.include_hash
             else
               {}
             end
index a18ead8..414b499 100644 (file)
@@ -37,7 +37,10 @@ module Manifest
         @attributes[attribute_name] = ModelModule::Attribute.new(self, attribute_name, attribute_manifest)
       }
       @associations = ModelModule::Association.new(self, @model_manifest['associations'])
-      @tree = @model_manifest['tree']
+      @tree = {}
+      @model_manifest['tree'].each {|tree_name, parent_model_name|
+        @tree[tree_name] = ModelModule::Tree.new(self, tree_name, parent_model_name)
+      }
       @lists = {}
       @model_manifest['lists'].each {|list_name, list_manifest|
         @lists[list_name] = ModelModule::ListFactory.factory(self, list_name, list_manifest)
@@ -48,20 +51,6 @@ module Manifest
       ::Manifest.item_name_to_model @model_name
     end
     
-    def tree_model_manifest tree_name
-      if tree_name
-        if @tree[tree_name]
-          r = ::Manifest.manifest.models[@tree[tree_name]]
-          raise "undefined tree_model for models > #{@model_name} > tree > #{tree_name}\n" unless r
-          r
-        else
-          nil
-        end
-      else
-        nil
-      end
-    end
-    
   end
 end
 
diff --git a/lib/manifest/model/tree.rb b/lib/manifest/model/tree.rb
new file mode 100644 (file)
index 0000000..8ae8336
--- /dev/null
@@ -0,0 +1,44 @@
+module Manifest
+  module ModelModule
+    class Tree
+      attr :model, :tree_name, :parent_model_name
+      def initialize model, tree_name, parent_model_name
+        @model = model
+        @tree_name = tree_name
+        @parent_model_name = parent_model_name
+        self.set_default
+        self.init
+      end
+      
+      def set_default
+      end
+      
+      def init
+      end
+      
+      def parent_model_manifest
+        r = ::Manifest.manifest.models[@parent_model_name]
+        raise "undefined parent model for models > #{@model.model_name} > tree > #{tree_name}\n" unless r
+        r
+      end
+      
+      def parent_tree_manifest
+        self.parent_model_manifest[@tree_name]
+      end
+      
+      def include_hash
+        if self.parent_tree_manifest
+          {@parent_model_name => self.parent_tree_manifest.include_hash}
+        else
+          {}
+        end
+      end
+      
+      def model_manifest
+        @model.model_manifest
+      end
+      
+    end
+    
+  end
+end