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.

Parameters:

  • strict (Boolean) (defaults to: false)

    To use strict checking or not



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.

Parameters:

  • name (Symbol)

    Name of the accessor

  • type (Class)

    Type of the accessor

  • nillable (Boolean) (defaults to: false)

    If the value can be nil or not

  • strict (Boolean) (defaults to: false)

    To use strict checking or not



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.

Returns:

  • (Array<Symbol>)

    Array of defined typed instance variables



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

def typed_ivars
  @typed_ivars ||= Array.new
end