Module: Filigree::TypedClass::ClassMethods

Defined in:
lib/filigree/types.rb

Instance Method Summary collapse

Instance Method Details

#default_constructor(strict = false) ⇒ void

This method returns an undefined value.

Define the default constructor for the including class.



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/filigree/types.rb', line 99

def default_constructor(strict = false)
  class_eval do
    if strict
      def initialize(*vals)
        if self.class.typed_ivars.length != vals.length
          raise ArgumentError, "#{self.class.typed_ivars.length} arguments expected, #{vals.length} given."
        end
  
        self.set_typed_ivars(vals)
      end
    else
      def initialize(*vals)
        self.set_typed_ivars(vals)
      end
    end
  end
end

#typed_ivar(name, type, nillable = false, strict = false) ⇒ void

This method returns an undefined value.

Define a typed instance variable.



141
142
143
144
145
146
147
148
149
# File 'lib/filigree/types.rb', line 141

def typed_ivar(name, type, nillable = false, strict = false)
  typed_ivars << name

  define_typed_accessor(name, nillable, strict, *
    type.is_a?(Array) ? [type.first, method(:check_array_type)] : [type, method(:check_type)]
  )
    
  attr_reader name
end

#typed_ivarsArray<Symbol>

Return the typed instance variables for an object.



154
155
156
# File 'lib/filigree/types.rb', line 154

def typed_ivars
  @typed_ivars ||= Array.new
end