Module: Ruby::Node::Traversal::Module

Included in:
Ruby::Node
Defined in:
lib/traversal/module.rb

Instance Method Summary collapse

Instance Method Details

#class_or_module?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/traversal/module.rb', line 17

def class_or_module?
  [Ruby::Class, Ruby::Module].include?(self.class)
end

#get_full_namespace(ns) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/traversal/module.rb', line 30

def get_full_namespace(ns)
  if ns.respond_to?(:namespace)
    name = ns.identifier.token 
    parent_ns = get_full_namespace(ns.namespace)
    name += ('::' + parent_ns) if !parent_ns.empty?
    return name.split('::').reverse.join('::')
  else
    return ns.identifier.token if ns.respond_to?(:identifier)
    ""
  end
end

#get_namespaceObject



25
26
27
28
# File 'lib/traversal/module.rb', line 25

def get_namespace
  return self.const.namespace if self.respond_to?(:const)
  self.identifier.namespace      
end

#module_namespace?(namespace) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/traversal/module.rb', line 21

def module_namespace?(namespace)
  namespace == get_full_namespace(get_namespace) 
end

#namespace?(full_name) ⇒ Boolean

Returns:

  • (Boolean)


5
6
7
8
9
10
11
12
13
14
15
# File 'lib/traversal/module.rb', line 5

def namespace?(full_name)
  if full_name.split('::').size > 1
    namespaces = full_name.split('::')[0..-2]
    namespace = namespaces.join('::')

    if class_or_module?
      return module_namespace?(namespace)
    end
  end
  true
end

#superclass?(value) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
# File 'lib/traversal/module.rb', line 42

def superclass?(value)      
  if class_or_module?
    ns = get_full_namespace(self.super_class) 
    return ns == value
  end
  false      
end