module MeasureIts
Constants
- VERSION
Public Class Methods
add_strategy(name, &block)
click to toggle source
# File lib/measure_its.rb, line 5 def add_strategy(name, &block) strategies[name] = block end
build(names)
click to toggle source
# File lib/measure_its.rb, line 9 def build(names) original = nil ss = names.map { |n| strategies.fetch(n) } new_method = ss.reverse_each.inject(lambda { original.call }) do |acc, s| lambda { s.call(&acc) } end lambda do |o| original = o new_method.call end end
Private Class Methods
strategies()
click to toggle source
# File lib/measure_its.rb, line 23 def strategies @strategies ||= {} end
Public Instance Methods
measure_its(m, with:)
click to toggle source
Calls superclass method
# File lib/measure_its.rb, line 28 def measure_its(m, with:) m = Module.new do with_measure = MeasureIts.build(with) define_method(m) do |*args, &blk| with_measure.call(lambda { super(*args, &blk) }) end end self.prepend(m) end