Sha256: d4004b446879e1dc0ad41e5d9ce1a842b1f5c18931cd2181d625d1be8a6bdd6b

Contents?: true

Size: 875 Bytes

Versions: 9

Compression:

Stored size: 875 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

9 entries across 8 versions & 4 rubygems

Version Path
tdiary-5.0.5 vendor/bundle/gems/tins-1.13.2/lib/tins/expose.rb
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/tins-1.13.2/lib/tins/expose.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/tins-1.13.2/lib/tins/expose.rb
tdiary-5.0.4 vendor/bundle/gems/tins-1.13.2/lib/tins/expose.rb
tins-1.13.2 lib/tins/expose.rb
ivanvc-logstash-input-s3-3.1.1.4 vendor/local/gems/tins-1.13.0/lib/tins/expose.rb
ivanvc-logstash-input-s3-3.1.1.3 vendor/local/gems/tins-1.13.0/lib/tins/expose.rb
ivanvc-logstash-input-s3-3.1.1.2 vendor/local/gems/tins-1.13.0/lib/tins/expose.rb
tins-1.13.0 lib/tins/expose.rb