Sha256: 97baef26fdd5d211531c6c872a15445291fb0c7d555e46410959ea01ad32f4be
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
require 'timeloop/core_ext' require 'timeloop/version' module Kernel def every(value, opts = {}) maximum = parse_maximum_value(opts.fetch(:maximum)) if opts.key? :maximum frequency = parse_frequency(value) if maximum.nil? i = 0 loop do yield(i) if block_given? sleep frequency i += 1 end else maximum.times do |i| yield(i) if block_given? sleep frequency end end end private def parse_frequency(frequency) case frequency when Numeric frequency when :second, 'second' 1.second when :minute, 'second' 1.minute when :hour, 'hour' 1.hour when :day, 'day' 1.day when :month, 'month' 1.month when :year, 'year' 1.year else fail ArgumentError.new('wrong type of argument (should be a Numeric, Symbol or String)') end end def parse_maximum_value(maximum) case maximum when Enumerator maximum.count when Integer maximum else fail ArgumentError.new('wrong type of argument (should be an Enumerator or Integer)') end end end class Object include Kernel end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
timeloop-1.0.3 | lib/timeloop.rb |