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

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]