lib/active_object/date.rb in active_object-3.0.0 vs lib/active_object/date.rb in active_object-3.1.0
- old
+ new
@@ -1,7 +1,16 @@
module ActiveObject::Date
+ MINUTE = 60.0
+ HOUR = MINUTE * 60.0
+ DAY = HOUR * 24.0
+ WEEK = DAY * 7.0
+ YEAR = DAY * 365.25
+ DECADE = YEAR * 10.0
+ CENTURY = DECADE * 10.0
+ MILLENNIUM = CENTURY * 10.0
+
STRING_UNITS = {
d: "d", day: "d", day_padded: "d", dd: "-d", Day: "-d", day_unpadded: "-d",
ddd: "_d", DAY: "_d", day_blank: "_d", dddd: "j", day_of_the_year: "j",
m: "m", month: "m", month_padded: "m", mm: "-m", Month: "-m",
month_unpadded: "-m", mmm: "_m", MONTH: "_m", month_blank: "_m", mmmm: "B",
@@ -19,9 +28,63 @@
weekday_unpadded: "%-d", weekday_blank: "%_d", weekday_name: "%A",
weekday_name_abbr: "%a", yr: "%y", year_abbr: "%y", year: "%Y",
date: "%B %-d, %Y", date_abbr:"%b %-d, %Y", date_iso: "%Y-%m-%d",
day: "%B %-d", day_abbr: "%b %-d", day_iso: "%m-%d"
}
+
+ def count_centuries_since(time)
+ count_seconds_since(time) / CENTURY
+ end
+
+ alias_method :count_centuries_until, :count_centuries_since
+
+ def count_days_since(time)
+ count_seconds_since(time) / DAY
+ end
+
+ alias_method :count_days_until, :count_days_since
+
+ def count_decades_since(time)
+ count_seconds_since(time) / DECADE
+ end
+
+ alias_method :count_decades_until, :count_decades_since
+
+ def count_hours_since(time)
+ count_seconds_since(time) / HOUR
+ end
+
+ alias_method :count_hours_until, :count_hours_since
+
+ def count_milleniums_since(time)
+ count_seconds_since(time) / MILLENNIUM
+ end
+
+ alias_method :count_milleniums_until, :count_milleniums_since
+
+ def count_minutes_since(time)
+ count_seconds_since(time) / MINUTE
+ end
+
+ alias_method :count_minutes_until, :count_minutes_since
+
+ def count_seconds_since(time)
+ (to_time.to_f - time.to_time.to_f).abs
+ end
+
+ alias_method :count_seconds_until, :count_seconds_since
+
+ def count_weeks_since(time)
+ count_seconds_since(time) / WEEK
+ end
+
+ alias_method :count_weeks_until, :count_weeks_since
+
+ def count_years_since(time)
+ count_seconds_since(time) / YEAR
+ end
+
+ alias_method :count_years_until, :count_years_since
def format(string)
delimiters = string.scan(/\W+/)
formatters = string.scan(/[a-z0-9_]+/i)