Platypus

 _   ___
/ \ /   \
\. |: cc|
 (.|:,---,
 (.|: \ c|
 (.    y-'
  \ _ /
   m m

DESCRIPTION

Platypus provides a generalized type conversion system, method overloading and psuedo-classes.

SYNOPSIS

Type conversion work like a rational duck might expect.

"1234".to(Float)    => 1234.0  (Float)

Time.from("6:30")   => 1234.0  (Time)

You can of course define your own.

class X
  typecast String do |x|
    "#{x}"
  end
end

To overload a method, mixin the Overloadable module and use the #overload (or #sig) method to define new functionality based on a specified type interface.

class X
  include Overloadable

  def f
    "f"
  end

  sig Integer

  def f(i)
    "f#{i}"
  end

  sig String, String

  def f(s1, s2)
    [s1, s2].join('+')
  end
end

x = X.new

x.f          #=> "f"
x.f(1)       #=> "f1"
x.f("A","B") #=> "A+B"

Finally, the Platypus gives you the Type superclass (aka pseudo-classes).

class KiloType < Type
  x % 1000 == 0
end

KiloType === 1000
KiloType === 2000

To learn more about using Platypus see the Demonstrundum.

RELEASE NOTES

Please see HISTORY file.

INSTALLATION

To install with RubyGems simply open a console and type:

$ gem install platypus

Site installation can be achieved with Setup.rb (gem install setup), then download the tarball package and type:

$ tar -xvzf platypus-1.0.0.tgz
$ cd platypus-1.0.0
$ setup.rb all

Windows users use 'ruby setup.rb all'.

COPYING

Copyright © 2010 Thomas Sawyer

This program is ditributed unser the terms of the FreeBSD license.

See COPYING.rdoc file for details.

- mode: rdoc -