lib/active_object/time.rb in active_object-2.5.2 vs lib/active_object/time.rb in active_object-3.0.0
- old
+ new
@@ -1,159 +1,67 @@
-class Time
+module ActiveObject::Time
+ KEY_UNITS = {
+ month: "%m", month_padded: "%m", month_unpadded: "%-m", month_blank: "%_m",
+ month_name: "%B", month_name_abbr: "%b", month_year: "%m %Y",
+ month_padded_year: "%m %Y", month_unpadded_year: "%-m %Y",
+ month_blank_year: "%_m %Y", month_name_year: "%B %Y",
+ month_name_abbr_year: "%b %Y", weekday: "%d", weekday_padded: "%d",
+ weekday_unpadded: "%-d", weekday_blank: "%_d", weekday_name: "%A",
+ weekday_name_abbr: "%a", yr: "%y", year_abbr: "%y", year: "%Y", hour: "%H",
+ hour_padded: "%H", hour_blank: "%k", hour_imperical: "%I",
+ hour_imperical_padded: "%I", hour_imperical_blank: "%l", ampm: "%P",
+ meridian: "%P", minute: "%M", second: "%S", time_zone: "%z",
+ time_zone_offset: "%:z", time_zone_offset_full: "%::z", time_zone_name: "%Z",
+ date: "%B %-d, %Y", date_abbr:"%b %-d, %Y", date_iso: "%Y-%m-%d",
+ datetime: "%B %-d, %Y %H:%M", datetime_abbr: "%b %-d, %Y %H:%M",
+ datetime_iso: "%Y-%m-%d %H:%M", datetime_imperical: "%B %-d, %Y %I:%M %P",
+ datetime_imperical_abbr: "%b %-d, %Y %I:%M %P", datetime_imperical_iso: "%Y-%m-%d %I:%M %P",
+ datetime_tzn: "%B %-d, %Y %H:%M %Z", datetime_abbr_tzn: "%b %-d, %Y %H:%M %Z",
+ datetime_iso_tzn: "%Y-%m-%d %H:%M %z", datetime_imperical_tzn: "%B %-d, %Y %I:%M %P %Z",
+ datetime_imperical_abbr_tzn: "%b %-d, %Y %I:%M %P %Z", datetime_imperical_iso_tzn: "%Y-%m-%d %I:%M %P %z",
+ day: "%B %-d", day_abbr: "%b %-d", day_iso: "%m-%d", daytime: "%B %-d %H:%M",
+ daytime_abbr: "%b %-d %H:%M", daytime_iso: "%m-%d %H:%M",
+ daytime_imperical: "%B %-d %I:%M %P", daytime_imperical_abbr: "%b %-d %I:%M %P",
+ daytime_imperical_iso: "%m-%d %I:%M %P", time: "%H:%M", time_padded: "%H:%M",
+ time_blank: "%k:%M", time_tz: "%H:%M %z", time_tzn: "%H:%M %Z",
+ time_imperical: "%I:%M %P", time_imperical_padded: "%I:%M %P",
+ time_imperical_blank: "%l:%M %P", time_imperical_tz: "%I:%M %P %z",
+ time_imperical_tzn: "%I:%M %P %Z"
+ }
+ 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",
+ month_name: "B", mmmmm: "b", month_name_abbr: "b", w: "u", weekday: "u",
+ ww: "w", weekday_offset: "w", www: "A", weekday_name: "A", wwww: "a",
+ weekday_name_abbr: "a", wwwww: "W", week: "W", wwwwww: "U", week_offset: "U",
+ yy: "y", yr: "y", yyyy: "Y", year: "Y", h: "H", hour: "H", hour_padded: "H",
+ hh: "k", HOUR: "k", hour_blank: "k", hhh: "I", hour_imperical: "I",
+ hour_imperical_padded: "I", hhhh: "l", HOUR_IMPERICAL: "l",
+ hour_imperical_blank: "l", ampm: "P", meridian: "P", AMPM: "p",
+ MERIDIAN: "p", n: "M", minute: "M", s: "S", second: "S", z: "z",
+ time_zone: "z", zz: ":z", time_zone_offset: ":z", zzz: "::z",
+ time_zone_offset_full: "::z", zzzz: "Z", time_zone_name: "Z"
+ }
+
def format(string)
delimiters = string.scan(/\W+/)
formatters = string.scan(/[a-z0-9_]+/i)
- format_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',
- 'month_name' => 'B',
- 'mmmmm' => 'b',
- 'month_name_abbr' => 'b',
- 'w' => 'u',
- 'weekday' => 'u',
- 'ww' => 'w',
- 'weekday_offset' => 'w',
- 'www' => 'A',
- 'weekday_name' => 'A',
- 'wwww' => 'a',
- 'weekday_name_abbr' => 'a',
- 'wwwww' => 'W',
- 'week' => 'W',
- 'wwwwww' => 'U',
- 'week_offset' => 'U',
- 'yy' => 'y',
- 'yr' => 'y',
- 'yyyy' => 'Y',
- 'year' => 'Y',
- 'h' => 'H',
- 'hour' => 'H',
- 'hour_padded' => 'H',
- 'hh' => 'k',
- 'HOUR' => 'k',
- 'hour_blank' => 'k',
- 'hhh' => 'I',
- 'hour_imperical' => 'I',
- 'hour_imperical_padded' => 'I',
- 'hhhh' => 'l',
- 'HOUR_IMPERICAL' => 'l',
- 'hour_imperical_blank' => 'l',
- 'ampm' => 'P',
- 'meridian' => 'P',
- 'AMPM' => 'p',
- 'MERIDIAN' => 'p',
- 'n' => 'M',
- 'minute' => 'M',
- 's' => 'S',
- 'second' => 'S',
- 'z' => 'z',
- 'time_zone' => 'z',
- 'zz' => ':z',
- 'time_zone_offset' => ':z',
- 'zzz' => '::z',
- 'time_zone_offset_full' => '::z',
- 'zzzz' => 'Z',
- 'time_zone_name' => 'Z'
- }.freeze
+ string = formatters.map do |unit|
+ "%#{STRING_UNITS.fetch(unit.to_sym)}#{delimiters.shift || ''}"
+ end
- strftime(formatters.map { |f| "%#{format_units.fetch(f)}#{delimiters.shift || ''}" }.join)
+ strftime(string.join)
end
def to_format(key=:datetime_iso)
- format_units = {
- month: '%m',
- month_padded: '%m',
- month_unpadded: '%-m',
- month_blank: '%_m',
- month_name: '%B',
- month_name_abbr: '%b',
- month_year: '%m %Y',
- month_padded_year: '%m %Y',
- month_unpadded_year: '%-m %Y',
- month_blank_year: '%_m %Y',
- month_name_year: '%B %Y',
- month_name_abbr_year: '%b %Y',
- weekday: '%d',
- weekday_padded: '%d',
- weekday_unpadded: '%-d',
- weekday_blank: '%_d',
- weekday_name: '%A',
- weekday_name_abbr: '%a',
- yr: '%y',
- year_abbr: '%y',
- year: '%Y',
- hour: '%H',
- hour_padded: '%H',
- hour_blank: '%k',
- hour_imperical: '%I',
- hour_imperical_padded: '%I',
- hour_imperical_blank: '%l',
- ampm: '%P',
- meridian: '%P',
- minute: '%M',
- second: '%S',
- time_zone: '%z',
- time_zone_offset: '%:z',
- time_zone_offset_full: '%::z',
- time_zone_name: '%Z',
- date: '%B %-d, %Y',
- date_abbr: '%b %-d, %Y',
- date_iso: '%Y-%m-%d',
- datetime: '%B %-d, %Y %H:%M',
- datetime_abbr: '%b %-d, %Y %H:%M',
- datetime_iso: '%Y-%m-%d %H:%M',
- datetime_imperical: '%B %-d, %Y %I:%M %P',
- datetime_imperical_abbr: '%b %-d, %Y %I:%M %P',
- datetime_imperical_iso: '%Y-%m-%d %I:%M %P',
- datetime_tzn: '%B %-d, %Y %H:%M %Z',
- datetime_abbr_tzn: '%b %-d, %Y %H:%M %Z',
- datetime_iso_tzn: '%Y-%m-%d %H:%M %z',
- datetime_imperical_tzn: '%B %-d, %Y %I:%M %P %Z',
- datetime_imperical_abbr_tzn: '%b %-d, %Y %I:%M %P %Z',
- datetime_imperical_iso_tzn: '%Y-%m-%d %I:%M %P %z',
- day: '%B %-d',
- day_abbr: '%b %-d',
- day_iso: '%m-%d',
- daytime: '%B %-d %H:%M',
- daytime_abbr: '%b %-d %H:%M',
- daytime_iso: '%m-%d %H:%M',
- daytime_imperical: '%B %-d %I:%M %P',
- daytime_imperical_abbr: '%b %-d %I:%M %P',
- daytime_imperical_iso: '%m-%d %I:%M %P',
- time: '%H:%M',
- time_padded: '%H:%M',
- time_blank: '%k:%M',
- time_tz: '%H:%M %z',
- time_tzn: '%H:%M %Z',
- time_imperical: '%I:%M %P',
- time_imperical_padded: '%I:%M %P',
- time_imperical_blank: '%l:%M %P',
- time_imperical_tz: '%I:%M %P %z',
- time_imperical_tzn: '%I:%M %P %Z'
- }.freeze
-
- strftime(format_units.fetch(key.to_sym))
+ strftime(KEY_UNITS.fetch(key.to_sym))
end
alias_method :stamp, :to_format
-end
\ No newline at end of file
+end
+
+Time.send(:include, ActiveObject::Time) if ActiveObject.configuration.autoload_time