class Object

Public Instance Methods

convert(str) click to toggle source
# File bin/pto, line 6
def convert(str)
  case str
  when /(.*)\/(.*)/
    return Float($1) / Float($2)
  when /(.*)\.(.*)/
    return Float(str)
  else
    return Integer(str)
  end
end
days_until_cap(accrual:, cap:, rate:) click to toggle source
# File bin/pto, line 17
def days_until_cap(accrual:, cap:, rate:)
  days = 0
  return days if accrual >= cap

  daily_rate = rate / 365.0
  while accrual < cap
    accrual += daily_rate
    days += 1
  end
  days
end
main(options = {}) click to toggle source
# File bin/pto, line 29
def main(options = {})
  accrual = convert(options[:accrual])
  cap = convert(options[:cap])
  rate = convert(options[:rate])

  days = days_until_cap(accrual: accrual, cap: cap, rate: rate)
  if days == 0
    puts "Already over cap :-( Please take some PTO ASAP!"
  else
    cap_date = Date.today + days
    puts "Cap is hit in #{days} days - on #{cap_date}. Please take some PTO before then :-)"
  end

  return true
end