Sha256: 84f9150a36bdb8582617fe15d83bda4a428041e9cf172c1e5553706c97e541a2
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
Contents
class MethodCallRecorder def _play(object, &blk) i = 0 _method_chain.inject(object) do |obj, method_call| i += 1 yield(obj, method_call, _method_chain[i]) if block_given? method_call.call_on(obj) end end def _first_method _method_chain.first end def _empty? _method_chain.empty? end def to_s _method_chain.inspect end def _method_chain @_method_chain ||= [] end def _to_setter(value) new_rec = self.dup new_rec._method_chain = self._method_chain.dup new_rec._method_chain[-1] = self._method_chain[-1].to_setter(value) new_rec end def _reset! self._method_chain = [] end def _select(meth, args=nil) _method_chain.select do |method_call| selected = (method_call.method == meth) selected &&= (method_call.args == args) if args selected end end protected attr_writer :_method_chain private def method_missing(meth, *args, &blk) _method_chain << MethodCall.new(meth, *args, &blk) self end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
markevans-method_call_recorder-0.1.2 | lib/method_call_recorder/method_call_recorder.rb |