module Tins::Expose

def expose(method_name = nil, *args, &block)

Returns:
  • (Object) - result of the method or block call

Parameters:
  • block (Proc) -- any private/protected methods of the object can be
  • method_name (Symbol | String) -- name of the method
def expose(method_name = nil, *args, &block)
  if block
    instance_eval(&block)
  elsif method_name.nil?
    methods = private_methods(true) + protected_methods(true)
    o = dup
    o.singleton_class.class_eval do
      public(*methods)
    end
    o
  elsif method_name
    __send__(method_name, *args)
  end
end