class Chronic::Repeater
def self.scan(tokens, options)
-
(Array)
- list of tokens
Parameters:
-
options
(Hash
) -- Options specified in {Chronic.parse} -
tokens
(Array
) -- Array of tokens to scan
def self.scan(tokens, options) tokens.each do |token| if t = scan_for_season_names(token) then token.tag(t); next end if t = scan_for_month_names(token) then token.tag(t); next end if t = scan_for_day_names(token) then token.tag(t); next end if t = scan_for_day_portions(token) then token.tag(t); next end if t = scan_for_times(token) then token.tag(t); next end if t = scan_for_units(token) then token.tag(t); next end end end
def self.scan_for_day_names(token)
-
(RepeaterDayName, nil)
-
Parameters:
-
token
(Token
) --
def self.scan_for_day_names(token) scan_for token, RepeaterDayName, { /^m[ou]n(day)?$/ => :monday, /^t(ue|eu|oo|u|)s?(day)?$/ => :tuesday, /^we(d|dnes|nds|nns)(day)?$/ => :wednesday, /^th(urs|ers)(day)?$/ => :thursday, /^fr[iy](day)?$/ => :friday, /^sat(t?[ue]rday)?$/ => :saturday, /^su[nm](day)?$/ => :sunday } end
def self.scan_for_day_portions(token)
-
(RepeaterDayPortion, nil)
-
Parameters:
-
token
(Token
) --
def self.scan_for_day_portions(token) scan_for token, RepeaterDayPortion, { /^ams?$/ => :am, /^pms?$/ => :pm, /^mornings?$/ => :morning, /^afternoons?$/ => :afternoon, /^evenings?$/ => :evening, /^(night|nite)s?$/ => :night } end
def self.scan_for_month_names(token)
-
(RepeaterMonthName, nil)
-
Parameters:
-
token
(Token
) --
def self.scan_for_month_names(token) scan_for token, RepeaterMonthName, { /^jan\.?(uary)?$/ => :january, /^feb\.?(ruary)?$/ => :february, /^mar\.?(ch)?$/ => :march, /^apr\.?(il)?$/ => :april, /^may$/ => :may, /^jun\.?e?$/ => :june, /^jul\.?y?$/ => :july, /^aug\.?(ust)?$/ => :august, /^sep\.?(t\.?|tember)?$/ => :september, /^oct\.?(ober)?$/ => :october, /^nov\.?(ember)?$/ => :november, /^dec\.?(ember)?$/ => :december } end
def self.scan_for_season_names(token)
-
(RepeaterSeasonName, nil)
-
Parameters:
-
token
(Token
) --
def self.scan_for_season_names(token) scan_for token, RepeaterSeasonName, { /^springs?$/ => :spring, /^summers?$/ => :summer, /^(autumn)|(fall)s?$/ => :autumn, /^winters?$/ => :winter } end
def self.scan_for_times(token)
-
(RepeaterTime, nil)
-
Parameters:
-
token
(Token
) --
def self.scan_for_times(token) scan_for token, RepeaterTime, /^\d{1,2}(:?\d{2})?([\.:]?\d{2})?$/ end
def self.scan_for_units(token)
-
(Repeater)
- A new instance of a subclass of Repeater
Parameters:
-
token
(Token
) --
def self.scan_for_units(token) { /^years?$/ => :year, /^seasons?$/ => :season, /^months?$/ => :month, /^fortnights?$/ => :fortnight, /^weeks?$/ => :week, /^weekends?$/ => :weekend, /^(week|business)days?$/ => :weekday, /^days?$/ => :day, /^hours?$/ => :hour, /^minutes?$/ => :minute, /^seconds?$/ => :second }.each do |item, symbol| if item =~ token.word klass_name = 'Repeater' + symbol.to_s.capitalize klass = Chronic.const_get(klass_name) return klass.new(symbol) end end return nil end
def <=>(other)
def <=>(other) width <=> other.width end
def next(pointer)
def next(pointer) raise("Start point must be set before calling #next") unless @now end
def this(pointer)
def this(pointer) raise("Start point must be set before calling #this") unless @now end
def to_s
def to_s 'repeater' end
def width
def width raise("Repeater#width must be overridden in subclasses") end