OSDN Git Service

element
[pettanr/pettanr.git] / lib / peta / content.rb
index 337daa4..fbc9cf8 100644 (file)
@@ -2,7 +2,7 @@ module Peta
   class Content < Item
     self.abstract_class = true
     
-    # Dynamic ClassMethods
+    # Dynamic Methods
     
     def self._content?
       self.my_manifest.content_model
@@ -24,6 +24,7 @@ module Peta
     
     def self.load_manifest
       super
+      # Class Methods
       f = self._content?
       define_singleton_method("content?") do 
         f
@@ -43,9 +44,21 @@ module Peta
       define_singleton_method("owner_column") do 
         o
       end
+      define_singleton_method("child_models") do  |tree_name|
+        self.my_manifest.child_models tree_name
+      end
+      # Instance Methods
+      define_method("parent_model") do |tree_name|
+        self.__send__ self.class.parent_model(tree_name).item_name
+      end
+      define_method("elements") do |tree_name|
+        self.my_manifest.child_element_names(tree_name).map {|element_name|
+          self.__send__ element_name
+        }
+      end
     end
     
-    # ClassMethods
+    # Class Methods
     
     def self.operator operators
       return nil unless self.owner_type
@@ -61,7 +74,7 @@ module Peta
       raise ActiveRecord::Forbidden unless content.own?(operators)
       content
     end
-    #InstanceMethods
+    # Instance Methods
     
     def owner_model
       self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self