class Vpim::Duration

Constants

MINS_HOUR
SECS_DAY
SECS_HOUR

Public Class Methods

as_str(arr) click to toggle source
# File lib/vpim/duration.rb, line 72
def Duration.as_str(arr)
  s = ""
  case arr.length
    when 4
      if arr[0] > 0
        s << "#{arr[0]} days"
      end
      if arr[1] > 0
        if s.length > 0
          s << ', '
        end
        s << "#{arr[1]} hours"
      end
      if arr[2] > 0
        if s.length > 0
          s << ', '
        end
        s << "#{arr[2]} mins"
      end
      if arr[3] > 0
        if s.length > 0
          s << ', '
        end
        s << "#{arr[3]} secs"
      end
    when 3
      if arr[0] > 0
        s << "#{arr[0]} hours"
      end
      if arr[1] > 0
        if s.length > 0
          s << ', '
        end
        s << "#{arr[1]} mins"
      end
      if arr[2] > 0
        if s.length > 0
          s << ', '
        end
        s << "#{arr[2]} secs"
      end
  end

  s
end
days(days) click to toggle source
# File lib/vpim/duration.rb, line 32
def Duration.days(days)
  Duration.new(days * SECS_DAY)
end
hours(hours) click to toggle source
# File lib/vpim/duration.rb, line 28
def Duration.hours(hours)
  Duration.new(hours * SECS_HOUR)
end
mins(mins) click to toggle source
# File lib/vpim/duration.rb, line 24
def Duration.mins(mins)
  Duration.new(mins * 60)
end
new(secs) click to toggle source

Initialize from a number of seconds.

# File lib/vpim/duration.rb, line 16
def initialize(secs)
  @secs = secs
end
secs(secs) click to toggle source
# File lib/vpim/duration.rb, line 20
def Duration.secs(secs)
  Duration.new(secs)
end

Public Instance Methods

by_days() click to toggle source
# File lib/vpim/duration.rb, line 60
def by_days
  [ days, hours % 24, mins % MINS_HOUR, secs % 60]
end
by_hours() click to toggle source
# File lib/vpim/duration.rb, line 56
def by_hours
  [ hours, mins % MINS_HOUR, secs % 60]
end
days() click to toggle source
# File lib/vpim/duration.rb, line 48
def days
  (@secs/SECS_DAY).to_i
end
hours() click to toggle source
# File lib/vpim/duration.rb, line 44
def hours
  (@secs/SECS_HOUR).to_i
end
mins() click to toggle source
# File lib/vpim/duration.rb, line 40
def mins
  (@secs/60).to_i
end
secs() click to toggle source
# File lib/vpim/duration.rb, line 36
def secs
  @secs
end
to_a() click to toggle source
# File lib/vpim/duration.rb, line 64
def to_a
  by_days
end
to_s() click to toggle source
# File lib/vpim/duration.rb, line 68
def to_s
  Duration.as_str(self.to_a)
end
weeks() click to toggle source
# File lib/vpim/duration.rb, line 52
def weeks
  (days/7).to_i
end