class TimeInterval::TimeWithDuration

Constants

UNITS

Attributes

duration[R]
start_time[R]

Public Class Methods

new(time, duration, forwards = true) click to toggle source
# File lib/time_interval/time_with_duration.rb, line 28
def initialize(time, duration, forwards = true)
  @start_time = time
  @duration = duration
  @forwards = forwards
end
parse(iso8601) click to toggle source
# File lib/time_interval/time_with_duration.rb, line 5
def self.parse(iso8601)
  halves = iso8601.split('/')

  fail ArgumentError unless halves.length == 2

  if halves[0]['P']
    forwards = false
    duration = Duration.parse(halves[0])
    time = halves[1]
  elsif halves[1]['P']
    forwards = true
    duration = Duration.parse(halves[1])
    time = halves[0]
  else
    fail ArgumentError
  end

  new Time.parse(time), duration, forwards
end

Public Instance Methods

==(other) click to toggle source
# File lib/time_interval/time_with_duration.rb, line 34
def ==(other)
  return false unless other.is_a? TimeWithDuration

  start_time == other.start_time && end_time == other.end_time
end
Also aliased as: eql?
end_time() click to toggle source
# File lib/time_interval/time_with_duration.rb, line 42
def end_time
  if forwards?
    duration.add_to start_time
  else
    duration.subtract_from start_time
  end
end
eql?(other)
Alias for: ==
iso8601() click to toggle source
# File lib/time_interval/time_with_duration.rb, line 50
def iso8601
  if forwards?
    "#{start_time.iso8601}/#{duration.iso8601}"
  else
    "#{duration.iso8601}/#{start_time.iso8601}"
  end
end
step() click to toggle source
# File lib/time_interval/time_with_duration.rb, line 58
def step
  TimeWithDuration.new end_time, duration, forwards?
end

Private Instance Methods

forwards?() click to toggle source
# File lib/time_interval/time_with_duration.rb, line 64
def forwards?
  @forwards == true
end