Facets
Typecast

Overview

Typecast provides a simple generic type conversion system. All the ruby core conversions are available by default.

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

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

1) 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)
    

2. Define a from_class_name class method

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

      "1234".cast_to CustomType  =>  #
    

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 looks like

      "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.

Copyright © 2004 Thomas Sawyer and all respective authors. Ruby License