rubyworks / platypus

Ruby Knows Types
http://rubyworks.github.com/platypus
Other
9 stars 0 forks source link

Platypus

Gem Version Build Status Fork Me Report Issue Gittip

Homepage · Development · Report Issue

Platypus provides a generalized type conversion system, method overloading and psuedo-classes for the Ruby programming language.

Overview

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.

Installation

To install with RubyGems simply open a console and type:

$ gem install platypus

Or add it as a dependency to your Gemfile.

gem "platypus"

Old school 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'.

Authors

Copying

Copyright (c) 2010 Rubyworks

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

See LICENSE.txt file for details.



 _   ___
/ \ /   \
\. |: cc|     .---------.
 (.|:,---,   <  Feel the \
 (.|: \ c|    \ POWER!!! /
 (.    y-'     '--------'
  \ _ /
   m m