class ChronicDuration::Duration

Attributes

days[RW]
hours[RW]
minutes[RW]
months[RW]
seconds[RW]
years[RW]

Public Class Methods

new(seconds) click to toggle source
# File lib/chronic_duration.rb, line 92
def initialize seconds
  @years = @months = @days = @hours = @minutes = 0
  @seconds = seconds

  compute_measures seconds
end

Private Instance Methods

assign(setter, value) click to toggle source
# File lib/chronic_duration.rb, line 122
def assign setter, value
  self.send setter, value
end
compute_measures(seconds) click to toggle source
# File lib/chronic_duration.rb, line 100
def compute_measures seconds
  quotient = seconds
  remainder = 0

  unit_of_measures.each do |uom|
    break unless quotient > uom[:amount]
    remainder = quotient % uom[:amount]
    quotient /= uom[:amount]
    assign uom[:name], remainder
    assign uom[:parent], quotient.to_i
  end
end
unit_of_measures() click to toggle source
# File lib/chronic_duration.rb, line 113
def unit_of_measures
  [ { :name => :seconds=, :parent => :minutes=, :amount => 60 },
    { :name => :minutes=, :parent => :hours=, :amount => 60 },
    { :name => :hours=, :parent => :days=, :amount => 24 },
    { :name => :days=, :parent => :months=, :amount => 30 },
    { :name => :months=, :parent => :years=, :amount => 12 }
  ]
end