Module: Matrix::CoercionHelper

Included in:
Matrix, Scalar, Vector
Defined in:
lib/rubysl/matrix/matrix.rb

Overview

:nodoc:

Class Method Summary collapse

Class Method Details

.coerce_to(obj, cls, meth) ⇒ Object

Helper method to coerce a value into a specific class. Raises a TypeError if the coercion fails or the returned value is not of the right class. (from Rubinius)

Raises:

  • (TypeError)


1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
# File 'lib/rubysl/matrix/matrix.rb', line 1090

def self.coerce_to(obj, cls, meth) # :nodoc:
  return obj if obj.kind_of?(cls)

  begin
    ret = obj.__send__(meth)
  rescue Exception => e
    raise TypeError, "Coercion error: #{obj.inspect}.#{meth} => #{cls} failed:\n" \
                     "(#{e.message})"
  end
  raise TypeError, "Coercion error: obj.#{meth} did NOT return a #{cls} (was #{ret.class})" unless ret.kind_of? cls
  ret
end

.coerce_to_int(obj) ⇒ Object



1103
1104
1105
# File 'lib/rubysl/matrix/matrix.rb', line 1103

def self.coerce_to_int(obj)
  coerce_to(obj, Integer, :to_int)
end