lib/cutter/stamper.rb in cutter-0.5.12 vs lib/cutter/stamper.rb in cutter-0.6.0

- old
+ new

@@ -1,19 +1,73 @@ +require 'set' + class Object def time_now Time.now.strftime("%s%L").to_i end - def stamper(message = nil, &block) - def stamp(message = "<no subj>") - time_passed = time_now - @time_initial - puts("~ testing: #{message}, #{time_passed}ms") + def stamper name, &block + scope = Stamper[name] || Stamper[:default] + msg = 'no msg' + if scope + message = scope.label.values.first end + puts("~ #{message}") puts("~ testing: start") - @time_initial = time_now - yield - time_passed = time_now - @time_initial + scope.time_initial = time_now + yield scope + time_passed = time_now - scope.time_initial puts("~ testing: end (#{time_passed}ms)") end +end +class Stamper + attr_reader :label + attr_accessor :time_initial + + def initialize label + @label = label + end + + def msg label + messages[label.keys.first] = label.values.first + end + + alias_method :<<, :msg + + def messages + @messages ||= {} + end + + def [] key + messages[key] + end + + def stamp lbl = nil + message = messages[lbl] || lbl + time_passed = time_now - time_initial + printf("~ stamp: %7d ms #{message}\n", time_passed) + end + + module ClassMethods + def scope label, &block + raise ArgumentError, "Must have hash, was: #{label}" if !label.kind_of? Hash + raise ArgumentError, "Must have block" if !block + stamper = Stamper.new(label) + stampers[label.keys.first] = stamper + yield stamper + stamper + end + + def [] key + stampers[key] + end + + protected + + def stampers + @stampers ||= {} + end + end + extend ClassMethods end