module Ocassionally
Constants
- VERSION
Public Instance Methods
__get_rate_and_condition(args, default_rate, default_condition)
click to toggle source
# File lib/ocassionally.rb, line 7 def __get_rate_and_condition(args, default_rate, default_condition) rate = default_rate condition = default_condition args.each do |arg| rate = arg if [Fixnum, Float].include? arg.class condition = arg if [String, TrueClass, FalseClass, NilClass].include? arg.class end if Float == rate.class rate = (rate < 1) ? (rate * 100).to_i : rate.to_i end return rate, condition end
__ocassionally(rate, condition, block=nil)
click to toggle source
# File lib/ocassionally.rb, line 20 def __ocassionally(rate, condition, block=nil) if __probability_function(rate) && ( String == condition.class ? eval(condition) : condition ) block.call unless block.nil? end end
__probability_function(rate)
click to toggle source
# File lib/ocassionally.rb, line 3 def __probability_function(rate) rand(100) < rate end
every_time(*args) { || ... }
click to toggle source
# File lib/ocassionally.rb, line 51 def every_time(*args, &block) # defered contionals are ignored yield if block_given? end
never(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 56 def never(*args, &block) # noop; but, there may be a side-effect if your conditional changes state end
ocassionally(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 31 def ocassionally(*args, &block) rate, condition = __get_rate_and_condition(args, 25, true) __ocassionally(rate, condition, block) end
often(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 41 def often(*args, &block) rate, condition = __get_rate_and_condition(args, 75, true) __ocassionally(rate, condition, block) end
seldom(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 36 def seldom(*args, &block) rate, condition = __get_rate_and_condition(args, 5, true) __ocassionally(rate, condition, block) end
sometimes(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 26 def sometimes(*args, &block) rate, condition = __get_rate_and_condition(args, 50, true) __ocassionally(rate, condition, block) end
very_often(*args, &block)
click to toggle source
# File lib/ocassionally.rb, line 46 def very_often(*args, &block) rate, condition = __get_rate_and_condition(args, 95, true) __ocassionally(rate, condition, block) end