Sha256: 2a93b9aee57c44c8bd5ba8275fb296f8aadb5db0832aa3ee76435e8aa920eaf9

Contents?: true

Size: 446 Bytes

Versions: 1

Compression:

Stored size: 446 Bytes

Contents

module Innate
  module Traited
    TRAITS = Hash.new{|h,k| h[k] = {}}

    def self.included(into)
      into.extend(self)
    end

    def trait(hash = nil)
      hash ? TRAITS[self].update(hash) : TRAITS[self]
    end

    def ancestral_trait
      ancs = respond_to?(:ancestors) ? ancestors : self.class.ancestors
      ancs.reverse.inject({}){|s,v|
        v.respond_to?(:trait) ? s.update(v.trait) : s
      }.merge(trait)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
manveru-innate-2009.02.06 lib/innate/traited.rb