Module: Testdo

Included in:
Test
Defined in:
lib/testdo.rb,
lib/testdo/capture.rb,
lib/testdo/version.rb

Defined Under Namespace

Classes: Test, Unwrap

Constant Summary collapse

VERSION =
"0.0.7"

Instance Method Summary collapse

Instance Method Details

#Capture(classes_methods, &callback) ⇒ Object

returns class that implement .eval(&block) and send all specified stuff to callback



34
35
36
37
38
39
40
41
42
43
# File 'lib/testdo/capture.rb', line 34

def Capture classes_methods, &callback
  Class.new do
    extend Testdo
    using CaptureModule(classes_methods, &callback)

    def self.eval █
      class_eval &block
    end
  end
end

#CaptureModule(classes_methods, &callback) ⇒ Object

only for methods with one param right now! #

returns module with refinements that inform callback when specified messages sent to specified classes



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/testdo/capture.rb', line 17

def CaptureModule(classes_methods, &callback)
  Module.new do
    classes_methods.each do |classes,method_names|
      [*classes].each do |klass|
        refine klass do
          [*method_names].each do |name|
            define_method name do |*arguments,&block|
              Unwrap[self].send(__method__,*arguments,&block).tap { |result| callback.call self,__method__,arguments,block,result }
            end
          end
        end
      end
    end
  end
end