Sha256: f52f07514c459660bb3d2857ecbd56b3a14f7e52468819ebafa0a08548150034

Contents?: true

Size: 857 Bytes

Versions: 1

Compression:

Stored size: 857 Bytes

Contents

require 'more_core_extensions/core_ext/module/namespace'

module MoreCoreExtensions
  module ObjectNamespace
    #
    # Returns whether or not the object is in the given namespace.
    #
    #   Aaa::Bbb::Ccc::Ddd.in_namespace?(Aaa::Bbb)            #=> true
    #   Aaa::Bbb::Ccc::Ddd.new.in_namespace?(Aaa::Bbb)        #=> true
    #   Aaa::Bbb::Ccc::Eee.in_namespace?("Aaa::Bbb")          #=> true
    #   Aaa::Bbb::Ccc::Eee.in_namespace?(Aaa::Bbb::Ccc::Ddd)  #=> false
    def in_namespace?(val)
      val_ns = val.to_s.split("::")
      val_ns == namespace[0, val_ns.length]
    end

    #
    # Returns an Array with the namespace to an Instance.
    #
    #   Aaa::Bbb::Ccc::Ddd.new.namespace  #=> ["Aaa", "Bbb", "Ccc", "Ddd"]
    def namespace
      self.class.namespace
    end
  end
end

Object.send(:include, MoreCoreExtensions::ObjectNamespace)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
more_core_extensions-1.2.0 lib/more_core_extensions/core_ext/object/namespace.rb