Class: SystemNavigation::RubyEnvironment

Inherits:
Object
  • Object
show all
Defined in:
lib/system_navigation/ruby_environment.rb

Instance Method Summary collapse

Instance Method Details

#all_behaviors(&block) ⇒ Object

Execute block on each class, metaclass, module and module’s metaclass.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/system_navigation/ruby_environment.rb', line 4

def all_behaviors(&block)
  enum = Enumerator.new do |y|
    ObjectSpace.each_object(Module) do |klass|
      y.yield klass
      y.yield klass.singleton_class
    end
  end

  if block_given?
    enum.each(&block)
  else
    enum
  end
end

#all_classes(&block) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/system_navigation/ruby_environment.rb', line 19

def all_classes(&block)
  enum = Enumerator.new do |y|
    ObjectSpace.each_object(Class) do |klass|
      y.yield klass
    end
  end

  if block_given?
    enum.each(&block)
  else
    enum
  end
end

#all_classes_and_modules(&block) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/system_navigation/ruby_environment.rb', line 33

def all_classes_and_modules(&block)
  enum = Enumerator.new do |y|
    ObjectSpace.each_object(Module) do |klass|
      y.yield klass
    end
  end

  if block_given?
    enum.each(&block)
  else
    enum
  end
end

#all_modules(&block) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/system_navigation/ruby_environment.rb', line 47

def all_modules(&block)
  enum = Enumerator.new do |y|
    self.all_classes_and_modules.each do |klass|
      y.yield(klass) if klass.instance_of?(Module)
    end
  end

  if block_given?
    enum.each(&block)
  else
    enum
  end
end

#all_objects(&block) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/system_navigation/ruby_environment.rb', line 61

def all_objects(&block)
  enum = Enumerator.new do |y|
    ObjectSpace.each_object do |klass|
      y.yield klass
    end
  end

  if block_given?
    enum.each(&block)
  else
    enum
  end
end