Sha256: 1e2f68961fae8be69f545a4634cdf85c805caa4cdb9a0c702c8bd18a11584bda

Contents?: true

Size: 878 Bytes

Versions: 75

Compression:

Stored size: 878 Bytes

Contents

module Tins
  module Expose
    # Expose any (private/protected) method or internal state of this object
    # returning the result for specing purposes.
    #
    # @param method_name [ Symbol | String ] name of the method
    #                                        (shortcut for reader methods).
    # @param block [ Proc ] any private/protected methods of the object can be
    #                       called in this block.
    #
    # @return [ Object ] result of the method or block call
    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
  end
end

Version data entries

75 entries across 64 versions & 2 rubygems

Version Path
tins-1.38.0 lib/tins/expose.rb
tins-1.37.1 lib/tins/expose.rb
tins-1.37.0 lib/tins/expose.rb
tins-1.36.1 lib/tins/expose.rb
tins-1.36.0 lib/tins/expose.rb
tins-1.35.0 lib/tins/expose.rb
tins-1.34.0 lib/tins/expose.rb
tins-1.33.0 lib/tins/expose.rb
tdiary-5.2.4 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/lib/tins/expose.rb
tins-1.32.1 lib/tins/expose.rb
tins-1.32.0 lib/tins/expose.rb
tdiary-5.2.3 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/lib/tins/expose.rb
tdiary-5.2.2 vendor/bundle/ruby/3.1.0/gems/tins-1.31.1/lib/tins/expose.rb
tins-1.31.1 lib/tins/expose.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/tins-1.31.0/lib/tins/expose.rb
tins-1.31.0 lib/tins/expose.rb
tins-1.30.0 lib/tins/expose.rb
tdiary-5.2.0 vendor/bundle/ruby/3.0.0/gems/tins-1.29.1/lib/tins/expose.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/tins-1.29.1/lib/tins/expose.rb
tdiary-5.1.7 vendor/bundle/ruby/2.7.0/gems/tins-1.29.1/lib/tins/expose.rb