oop/visibility_modifiers_parens.rb

tests/_examples/oop/visibility_modifiers_parens.rb in the metorex repository.

Toggled = Module.new do
  send(:private)

  def hidden
  end

  send(:protected)

  def guarded
  end

  send(:public)

  def open
  end
end

puts(Toggled.private_instance_methods(false).inspect)
puts(Toggled.protected_instance_methods(false).inspect)
puts(Toggled.public_instance_methods(false).inspect)

Returned = Module.new do
  def first
  end
  def second
  end

  puts(private(:first).inspect)
  puts(private([:first, :second]).inspect)
  puts(private(:first, :second).inspect)
  puts(public.inspect)
end

Evaled = Module.new do
  eval "private\ndef in_eval; end"
end
puts(Evaled.private_instance_methods(false).inspect)

Closured = Module.new do
  1.times do
    send(:private)
  end

  def after_closure
  end
end
puts(Closured.private_instance_methods(false).inspect)

module Ancestor
  def shared
  end
  private(:shared)
end

module Descendant
  include(Ancestor)
  private(:shared)
end
puts(Descendant.private_instance_methods(false).inspect)

puts(Module.private_instance_methods.include?(:private).inspect)

Output:

[:hidden]
[:guarded]
[:open]
:first
[:first, :second]
[:first, :second]
nil
[:in_eval]
[:after_closure]
[]
true