OSDN Git Service

refactoring manifest
[pettanr/pettanr.git] / lib / manifest / model / attribute.rb
index 0d9ab3e..cf8d40a 100644 (file)
@@ -1,41 +1,29 @@
-require_dependency "manifest/model/attribute/source"
+ManifestBase.require_modules "manifest/model/attribute/", 
+  %w|source|
+
 module Manifest
   module ModelModule
-    class Attribute
+    class Attribute < ManifestBase::NameValues
       include AttributeModule
-      attr :model, :attribute_name, :attribute_manifest, 
-        :type, :primary_key, :rules, :source
-      def initialize model, attribute_name, attribute_manifest
-        @model = model
-        @attribute_name = attribute_name
-        @attribute_manifest = attribute_manifest
-        self.set_default
-        self.init
-      end
+      
+      attr :type, :primary_key, :rules, :source
       
       def set_default
-        raise "undefined type for models > #{self.model_name} > attributes > #{@attribute_name}\n" unless @attribute_manifest['type']
-        @attribute_manifest['primary_key'] ||= 0
-        @attribute_manifest['rules'] ||= {}
+        super
+        raise "undefined type for #{self.module_message}\n" unless @args['type']
+        @args['primary_key'] ||= 0
+        @args['rules'] ||= {}
       end
       
       def init
-        @type = @attribute_manifest['type']
-        @primary_key = @attribute_manifest['primary_key']
-        @rules = @attribute_manifest['rules']
-        if @attribute_manifest['source']
-          @source = SourceFactory.factory(self, @attribute_name, @attribute_manifest['source'])
+        super
+        @primary_key = @args['primary_key']
+        @rules = @args['rules']
+        if @args['source']
+          @source = SourceFactory.factory(self, @name, @args['source'])
         end
       end
       
-      def model_name
-        @model.model_name
-      end
-      
-      def model_manifest
-        @model.model_manifest
-      end
-      
     end
     
   end