Module: PositiveBasicSupport::BasicObjectExt::ClassMethods

Defined in:
lib/positive_basic_support/basic_object_ext.rb

名前空間に関するメソッド collapse

Instance Method Details

#has_upper_namespaces?Boolean

上位の名前空間が存在するか否かを判定するメソッド

Examples:

UpperNamespaceTest.has_upper_namespaces? => false
UpperNamespaceTest::A.has_upper_namespaces? => true
UpperNamespaceTest::A::B.has_upper_namespaces? => true

Returns:

  • (Boolean)


45
46
47
48
# File 'lib/positive_basic_support/basic_object_ext.rb', line 45

def has_upper_namespaces?
  # upper_namespaces.length > 1
  /\:\:/ === name
end

#upper_namespace::Class (Const)

上位の名前空間のリスト(すぐ上のみ)

Returns:

  • (::Class (Const))

    example UpperNamespaceTest.upper_namespace => nil UpperNamespaceTest::A.upper_namespace => UpperNamespaceTest UpperNamespaceTest::A::B.upper_namespace => UpperNamespaceTest::A



55
56
57
58
59
60
61
62
# File 'lib/positive_basic_support/basic_object_ext.rb', line 55

def upper_namespace
  _has_upper_namespaces = has_upper_namespaces?
  if _has_upper_namespaces
    upper_namespaces( _has_upper_namespaces ).first
  else
    nil
  end
end

#upper_namespaces(_has_upper_namespaces = nil) ⇒ ::Array

上位の名前空間のリスト(すべて) ::UpperNamespaceTest::A.upper_namespaces => [ ::UpperNamespaceTest ] ::UpperNamespaceTest::A::B.upper_namespaces => [ ::UpperNamespaceTest::A , ::UpperNamespaceTest ]

Examples:

module UpperNamespaceTest
  module A
    module B
      module C
      end
      module C::D
      end
    end
  end
end

Returns:

  • (::Array)


25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/positive_basic_support/basic_object_ext.rb', line 25

def upper_namespaces( _has_upper_namespaces = nil )
  _has_upper_namespaces ||= has_upper_namespaces?
  if _has_upper_namespaces
    splited = self.name.split( "::" )[0..-2]
    ary = ::Array.new
    for i in 0..( splited.length - 1 )
      ary << eval( splited[ 0..i ].join( "::" ) )
    end
    ary.reverse
  else
    nil
  end
end