Project

platypus

0.0
No commit activity in last 3 years
No release in over 3 years
Provides a complete double-dispatch type conversion system, method overloadability and psuedo-classes.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
 Project Readme

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

  • Thomas Sawyer (trans)
  • Jonas Pfenniger

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