Project

traitee

0.0
No commit activity in last 3 years
No release in over 3 years
Traits for Ruby - more dynamic implementation of classic include/extend feature.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

 Project Readme

Traitee

Mixins or so-called traits for Ruby (like module did not exist :)).

How to use Traitee

require 'traitee'

class Transporter
  extend(Traitee::Trait)

  serves do
    def shipping_address
      'Koniarkova 101, 831 07 Bratislava Slovakia'
    end

    def current_range
      kms_left = rand(600) + 10
      "You have around #{kms_left} kms left."
    end
  end
end

class Shipper
  extend(Traitee::Trait)

  attr_accessor :width, :height, :depth

  serves do
    def set_dimensions(w, h, d)
      @width = w
      @height = h
      @depth = d
    end

    def dimensions
      "#{@width} x #{@height} x #{@depth}"
    end
  end
end

class Shipment
  extend Traitee::Merger
  merge Shipper, Transporter
end

shipment = Shipment.new

For more examples take a look into files inside examples folder.