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