Module: Isy::Methods

Defined in:
lib/isy.rb

Instance Method Summary collapse

Instance Method Details

#isy(subject, *args, &evaluation) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/isy.rb', line 12

def isy subject, *args, &evaluation
  if evaluation.nil? && args[0].nil?
    raise ArgumentError,
      'Object#isy requires either a type or evaluation block'
  end

  evaluation ||= lambda { |s| s.is_a? args[0] }

  unless evaluation.call(subject)
    raise Isy::ArgumentTypeMismatch.new(
      subject: subject,
      caller_method: caller_locations(1,1)[0].label
    )
  end
end