Sha256: b36076f7b3cdfbfa3124f1e4b9ec16cd4a8a5522335ea95e94fa234bb7f0aef0

Contents?: true

Size: 751 Bytes

Versions: 14

Compression:

Stored size: 751 Bytes

Contents

module Tins
  module Concern
    def self.extended(base)
      base.instance_variable_set("@_dependencies", [])
    end

    def append_features(base)
      if base.instance_variable_defined?("@_dependencies")
        base.instance_variable_get("@_dependencies") << self
        return false
      else
        return false if base < self
        @_dependencies.each { |dep| base.send(:include, dep) }
        super
        base.extend const_get("ClassMethods") if const_defined?("ClassMethods")
        base.class_eval(&@_included_block) if instance_variable_defined?("@_included_block")
      end
    end

    def included(base = nil, &block)
      if base.nil?
        @_included_block = block
      else
        super
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
tins-0.11.0 lib/tins/concern.rb
tins-0.10.0 lib/tins/concern.rb
tins-0.9.0 lib/tins/concern.rb
tins-0.8.4 lib/tins/concern.rb
tins-0.8.3 lib/tins/concern.rb
tins-0.8.2 lib/tins/concern.rb
tins-0.8.0 lib/tins/concern.rb
tins-0.7.4 lib/tins/concern.rb
tins-0.7.3 lib/tins/concern.rb
tins-0.7.2 lib/tins/concern.rb
tins-0.7.1 lib/tins/concern.rb
tins-0.7.0 lib/tins/concern.rb
tins-0.6.0 lib/tins/concern.rb
tins-0.5.6 lib/tins/concern.rb