Project

implicitly

0.0
No commit activity in last 3 years
No release in over 3 years
A port of Scala's implicits, this is an alternative to open classes that allows for easier testing.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Synopsis¶ ↑

Implicits in Ruby, based on Scala. Works like:

implicitly.from(BaseClass).to(WrapperClass).via do |base_object|
  WrapperClass.new(base_object)
end

Example¶ ↑

For example, to extend Fixnum with #seconds, #minutes, and #hours:

class FixnumWithTime
  def initialize(n)
    @n = n
  end

  def minutes
    seconds * 60
  end

  def hours
    minutes * 60
  end

  def seconds
    @n
  end
end

class Person
  implicitly.from(Fixnum).to(FixnumWithTime).via do |fixnum|
    FixnumWithTime.new(fixnum)
  end

  def age_in_seconds
    37.minutes
  end
end

Why¶ ↑

By using a wrapping class the extension can be tested independently of the base class.

Author¶ ↑

Mike Burns mburns@thoughtbot.com mike-burns.com/