Module: Disposable::Twin::Coercion::ClassMethods

Defined in:
lib/disposable/twin/coercion.rb

Instance Method Summary collapse

Instance Method Details

#coercing_setter!(name, type, nilify = false) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/disposable/twin/coercion.rb', line 18

def coercing_setter!(name, type, nilify=false)
 type = type ? (DRY_TYPES_CONSTANT::Nil | type) : DRY_TYPES_CONSTANT::Nil if nilify

  mod = Module.new do
    define_method("#{name}=") do |value|
      super type.(value)
    end
  end
  include mod
end

#property(name, options = {}, &block) ⇒ Object



12
13
14
15
16
# File 'lib/disposable/twin/coercion.rb', line 12

def property(name, options={}, &block)
  super(name, options, &block).tap do
    coercing_setter!(name, options[:type], options[:nilify]) if options[:type] || options[:nilify]
  end
end