Sha256: 50d5a315002ee1d12485038ec94af65a182f0061c70b424e5d0151b3b3469440

Contents?: true

Size: 1.07 KB

Versions: 7

Compression:

Stored size: 1.07 KB

Contents

class Module

  # Is a given class or module an ancestor of this
  # class or module?
  #
  #  class X ; end
  #  class Y < X ; end
  #
  #   Y.is?(X)  #=> true
  #
  #   CREDIT: Trans

  def is?(base)
    ancestors.slice(1..-1).include?(base)
  end

  # An alias for #include.
  #
  #   class X
  #     is Enumerable
  #   end
  #
  #   CREDIT: Trans

  #alias_method :is, :include

  def is(*mods)
    mods.each do |mod|
      if mod.const_defined?(:Self)
        extend mod::Self
        # pass it along if module
        if instance_of?(Module)
          const_set(:Self, Module.new) unless const_defined?(:Self)
          const_get(:Self).send(:include, mod::Self)
        end
      end
    end
    include(*mods)
  end

  # Expirmental idea for #is.
  #
  # If the module has #append_function_function
  # defined, this will use that instead of #include.
  #
  #   def is(*modules)
  #     module.each do { |m|
  #       if m.respond_to?(:append_feature_function)
  #         send(m.append_feature_function,m)
  #       else
  #         include m
  #       end
  #     end
  #   end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
facets-2.4.0 lib/facets/module/is.rb
facets-2.4.1 lib/facets/module/is.rb
facets-2.4.2 lib/core/facets/module/is.rb
facets-2.4.3 lib/core/facets/module/is.rb
facets-2.4.4 lib/core/facets/module/is.rb
facets-2.4.5 lib/core/facets/module/is.rb
mack-facets-0.8.2 lib/gems/facets-2.4.5/lib/core/facets/module/is.rb