oop/module_nesting_parens.rb
tests/_examples/oop/module_nesting_parens.rb in the metorex repository.
module Outer
module Inner
@recorded = {}
def self.[](name)
@recorded[name]
end
def self.[]=(name, value)
@recorded[name] = value
end
Inner[:body] = Module.nesting
class << self
Inner[:singleton] = Module.nesting
end
class Nested
Inner[:nested_class] = Module.nesting
end
def self.from_method
Module.nesting
end
end
Inner[:outer_body] = Module.nesting
end
Outer::Inner[:top_level] = Module.nesting
puts(Outer::Inner[:top_level].inspect)
puts(Outer::Inner[:outer_body].inspect)
puts(Outer::Inner[:body].inspect)
puts(Outer::Inner[:nested_class].inspect)
puts((Outer::Inner[:singleton] == [Outer::Inner.singleton_class, Outer::Inner, Outer]).inspect)
puts(Outer::Inner.from_method.inspect)
Output:
[]
[Outer]
[Outer::Inner, Outer]
[Outer::Inner::Nested, Outer::Inner, Outer]
true
[Outer::Inner, Outer]