module Runt

The Runt module is the main namespace for all Runt modules and classes. Using require statements, it makes the entire Runt library available.It also defines some new constants and exposes some already defined in the standard library classes Date and DateTime.

See also runt/sugar_rb which re-opens this module and adds some additional functionality

See also date.rb

Author

Matthew Lipper

Constants

April
August
DAYS
December
Eighth
Eigth
February
Fifth
First
Fourth
Fri
Friday
January
July
June
Last
LastProc
Last_of
MONTHS
March
May
Mon
Monday
Ninth
November
ORDINAL_ABBR
ORDINAL_SUFFIX
October
Sat
Saturday
Second
Second_to_last
September
Seventh
Sixth
Sun
Sunday

Yes it's true, I'm a big idiot!

Tenth
Third
Thu
Thursday
Tue
Tuesday
VERSION
WEEK_OF_MONTH_ORDINALS
Wed
Wednesday

Public Class Methods

const(string) click to toggle source
# File lib/runt/sugar.rb, line 149
def const(string)
  self.const_get(string.capitalize)
end
day_name(number) click to toggle source
# File lib/runt.rb, line 62
def day_name(number)
  Date::DAYNAMES[number]
end
format_date(date) click to toggle source
# File lib/runt.rb, line 74
def format_date(date)
  date.ctime
end
format_time(date) click to toggle source
# File lib/runt.rb, line 70
def format_time(date)
  date.strftime('%I:%M%p')
end
month_name(number) click to toggle source
# File lib/runt.rb, line 66
def month_name(number)
  Date::MONTHNAMES[number]
end
ordinalize(number) click to toggle source

Cut and pasted from activesupport-1.2.5/lib/inflector.rb

# File lib/runt.rb, line 81
def ordinalize(number)
  if (number.to_i==-1)
    'last'
  elsif (number.to_i==-2)
    'second to last'  
  elsif (11..13).include?(number.to_i % 100)
    "#{number}th"
  else
    case number.to_i % 10
      when 1 then "#{number}st"
      when 2 then "#{number}nd"
      when 3 then "#{number}rd"
      else    "#{number}th"
    end
  end
end

Public Instance Methods

after(date, inclusive=false) click to toggle source

Shortcut for AfterTE(date, …).new

# File lib/runt/sugar.rb, line 190
def after(date, inclusive=false)
  AfterTE.new(date, inclusive)
end
before(date, inclusive=false) click to toggle source

Shortcut for BeforeTE(date, …).new

# File lib/runt/sugar.rb, line 195
def before(date, inclusive=false)
  BeforeTE.new(date, inclusive)
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/runt/sugar.rb, line 154
def method_missing(name, *args, &block) 
      #puts "method_missing(#{name},#{args},#{block}) => #{result}"
  case name.to_s
  when /^daily_(\d{1,2})_(\d{2})([ap]m)_to_(\d{1,2})_(\d{2})([ap]m)$/
    # REDay
    st_hr, st_min, st_m, end_hr, end_min, end_m = $1, $2, $3, $4, $5, $6
    args = parse_time(st_hr, st_min, st_m)
    args.concat(parse_time(end_hr, end_min, end_m))
    return REDay.new(*args)
  when Regexp.new('^weekly_' + DAYS + '_to_' + DAYS + '$')
    # REWeek
    st_day, end_day = $1, $2
    return REWeek.new(Runt.const(st_day), Runt.const(end_day))
  when Regexp.new('^monthly_(\d{1,2})' + ORDINAL_SUFFIX + '_to_(\d{1,2})'                      + ORDINAL_SUFFIX + '$')
    # REMonth
    st_day, end_day = $1, $2
    return REMonth.new(st_day, end_day)
  when Regexp.new('^yearly_' + MONTHS + '_(\d{1,2})_to_' + MONTHS + '_(\d{1,2})$')
    # REYear
    st_mon, st_day, end_mon, end_day = $1, $2, $3, $4
    return REYear.new(Runt.const(st_mon), st_day, Runt.const(end_mon), end_day)
  when Regexp.new('^' + DAYS + '$')
    # DIWeek
    return DIWeek.new(Runt.const(name.to_s))
  when Regexp.new(WEEK_OF_MONTH_ORDINALS + '_' + DAYS)
    # DIMonth
    ordinal, day = $1, $2
    return DIMonth.new(Runt.const(ordinal), Runt.const(day))
  else
    # You're hosed
        super
  end
end
parse_time(hour, minute, ampm) click to toggle source
# File lib/runt/sugar.rb, line 199
def parse_time(hour, minute, ampm)
  hour = hour.to_i + 12 if ampm =~ /pm/
  [hour.to_i, minute.to_i]
end