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