Hi,

Just released version 0.0.9 of 'relativity'

* What is it?

Time, Date and DateTime classes don have a mode for working with relative time
inside 1 day (or 1 week, 1 month, 1 quarter, etc.). A relative time
object, relative to
a day or a week, is useful to describe e.g. opening hours of a business. Ranges
are built on top, so the ranges of opening hours can be represented.

* Short example (more examples in the README):

require 'relativity'
opens_at = DayTime.new("8:35") #=> 08:35:00

dtr = DayTimeRange.new("8 to 12:30") # => 08:00:00 to 12:30:00
dtr.start # => 08:00:00
dtr.to_s # => "08:00:00 to 12:30:00"

night_shift = DayTimeRange.new("21:45..06:05") # => 21:45:00..06:05:00

# normalize is used for persisting a DayTime and DayTimeRange in
normalized format

DayTime.normalize("8") # => "08:00:00"
DayTime.normalize(nil) # => nil
DayTimeRange.normalize("8..12") # => "08:00:00..12:00:00"
DayTimeRange.normalize("8 to 12", :separator => "..")
=> Relativity::InvalidRangeFormatError: Maybe the range separator was
not set correctly? Separator used was ".."

* Changes

** solved a bug with ruby 1.9.2 (thanks Bryan Dunsmore for the bug report)
** added DayTimeRange
** added methods for normalization (used for persisting in AR)
** see Changelog for details

* TODO

** new/normalize checks hours, minutes, seconds, nanoseconds
   in range (0...24, 0...60, 0...60, 0...1000_000_000)
** Add a '...' range (up to, but not including)
** comparisons (`==`, `include?`, ...)

** WeekTime
** WeekDay

** WeekTimeRange
** WeekDayRange

** ...

HTH,

Peter