Class | TypeCastException
In: | lib/facets/more/typecast.rb
Parent: | Exception

# TypeCast

Provides a generic simple type conversion utility. All the ruby core conversions are available by default.

To implement a new type conversion, you have two choices :

Take :

     class CustomType
       def initialize(my_var)
         @my_var = my_var
       end
     end

- Define a to_class_name instance method

     class CustomType
       def to_string
         my_var.to_s
       end
     end

     c = CustomType.new 1234
     s.cast_to String   =>  "1234" (String)

- Define a from_class_name class method

     class CustomType
       def self.from_string(str)
         self.new(str)
       end
     end

     "1234".cast_to CustomType  =>  #<CustomType:0xb7d1958c @my_var="1234">

Those two methods are equivalent in the result. It was coded like that to avoid the pollution of core classes with tons of to_* methods.

The standard methods to_s, to_f, to_i, to_a and to_sym are also used by this system if available.

## Usage

     "1234".cast_to Float     => 1234.0  (Float)
     Time.cast_from("6:30")   => 1234.0   (Time)

## FAQ

Why didn‘t you name the `cast_to` method to `to` ?

      Even if it would make the syntax more friendly, I suspect it could cause
      a lot of collisions with already existing code. The goal is that each
      time you call cast_to, you either get your result, either a
      TypeCastException

[Validate]