Sha256: 29847ca28167c41af4c2adb6e953209ea2abdf736e2da3c7fda8109c9f2cd7a2

Contents?: true

Size: 1.32 KB

Versions: 3

Compression:

Stored size: 1.32 KB

Contents

# -*- encoding : utf-8 -*-
require 'mdwa/generators'

module MDWA
  module DSL

    class EntityAttribute
      
      attr_accessor :entity, :name, :type, :default, :options
      
      ACCEPTED_TYPES = MDWA::Generators::ModelAttribute::STATIC_TYPES
      
      def initialize(entity)
        self.entity = entity
        self.default = false
      end
      
      def raise_errors_if_invalid!
        if !valid?
          raise "Invalid entity attribute: name is blank" if self.name.blank?
          raise "Invalid entity attribute: '#{name}' - type is blank" if self.type.blank?
          raise "Invalid entity attribute: '#{name}' - type '#{type}' is invalid" if self.type_invalid?
          raise "Invalid entity attribute: '#{name}' - entity is nil" if self.entity.blank?
        end
      end
      
      def valid?
        !entity.nil? and !name.blank? and !type.blank? and !type_invalid?
      end
      
      def type_invalid?
        !ACCEPTED_TYPES.include?( self.type.to_sym )
      end
      
      def default?
        self.default
      end
      
      def generate
        "#{name}:#{type}"
      end
      
      #
      # Return the model attribute generator.
      #
      def to_model_attribute
        self.entity.generator_model.attributes.select{ |m_attr| m_attr.name == self.name }.first
      end

    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mdd-3.1.4 lib/mdwa/dsl/entity_attribute.rb
mdd-3.1.2 lib/mdwa/dsl/entity_attribute.rb
mdd-3.1.1 lib/mdwa/dsl/entity_attribute.rb