Module: Tins::Expose

Included in:
Object
Defined in:
lib/tins/expose.rb

Instance Method Summary collapse

Instance Method Details

#expose(method_name = nil, *args, &block) ⇒ Object

Expose any (private/protected) method or internal state of this object returning the result for specing purposes.

Parameters:

  • method_name (Symbol | String) (defaults to: nil)

    name of the method (shortcut for reader methods).

  • block (Proc)

    any private/protected methods of the object can be called in this block.

Returns:

  • (Object)

    result of the method or block call



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/tins/expose.rb', line 12

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