Module Innate::Traited
In: lib/innate/traited.rb

Traited helps you doing configuration similar to class variables.

It‘s built on a simple Hash, where keys are objects and the values the configuration. By using {Traited#ancestral_trait} you will get nicely inherited configuration, where keys later in the ancestors will take precedence.

@example usage

  class Foo
    include Innate::Traited
    trait :hello => 'Hello'

    def initialize
      trait :hello => 'World!'
    end

    def show
      [class_trait[:hello], trait[:hello], ancestral_trait[:hello]]
    end
  end

  Foo.trait[:hello] # => "Hello"
  foo = Foo.new
  foo.trait[:hello] # => "World!"
  foo.show          # => ["Hello", "World!", "World!"]

Methods

Constants

ANCESTRAL_VALUES = {}, {}, {}

Public Class methods

Public Instance methods

Builds a trait from all the ancestors, closer ancestors overwrite distant ancestors

@example

 class Foo
   include Innate::Traited
   trait :one => :eins, :first => :erstes
 end

 class Bar < Foo
   trait :two => :zwei
 end

 class Foobar < Bar
   trait :three => :drei, :first => :overwritten
 end

 Foobar.ancestral_trait # => {
   :three => :drei, :two => :zwei, :one => :eins, :first => :overwritten
 }

trait for self.class if we are an instance

[Validate]