introspection/public_methods_no_parens.rb

tests/_examples/introspection/public_methods_no_parens.rb in the metorex repository.

module Helpers
  def mixed_in_open
  end
end

class Parent
  def parent_open
  end

  def parent_shut
  end
  private :parent_shut

  def self.parent_class_open
  end
end

class Child < Parent
  include Helpers

  def child_open
  end

  def child_guarded
  end
  protected :child_guarded

  def self.child_class_open
  end
end

def opens names
  names.select { |name| name.to_s.include?("open") }.sort
end

child = Child.new
puts opens(child.public_methods(false)).inspect
puts opens(child.public_methods).inspect
puts opens(Child.public_methods(false)).inspect
puts opens(child.public_methods(nil)).inspect
puts child.public_methods.include? :child_guarded
puts child.public_methods.include? :parent_shut

quotient = 13.divmod 4
puts quotient.inspect
negative_divisor = 13.divmod(-4)
puts negative_divisor.inspect
minus = -13
negative_value = minus.divmod 4
puts negative_value.inspect
puts 1.public_methods.include? :divmod

begin
  1.divmod 0
rescue ZeroDivisionError => error
  puts "#{error.class}: #{error.message}"
end

Output:

[:child_open]
[:child_open, :mixed_in_open, :parent_open]
[:child_class_open, :parent_class_open]
[:child_open]
false
false
[3, 1]
[-4, -3]
[-4, 3]
true
ZeroDivisionError: divided by 0