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