### Home Classes Methods

### In Files

- lib/chronic/repeater.rb

### Parent

Chronic::Tag

### Methods

- ::scan
- ::scan_for_day_names
- ::scan_for_day_portions
- ::scan_for_month_names
- ::scan_for_season_names
- ::scan_for_times
- ::scan_for_units
- #<=>
- #next
- #this
- #to_s
- #width

### Files

- LICENSE

### Class/Module Index

Quicksearch

- Chronic
- Chronic::Date
- Chronic::Grabber
- Chronic::Handler
- Chronic::Handlers
- Chronic::MiniDate
- Chronic::Numerizer
- Chronic::Ordinal
- Chronic::Parser
- Chronic::Pointer
- Chronic::Repeater
- Chronic::Scalar
- Chronic::Season
- Chronic::Separator
- Chronic::Sign
- Chronic::Span
- Chronic::Tag
- Chronic::Time
- Chronic::TimeZone
- Chronic::Token

No matching classes.

# Chronic::Repeater

### Public Class Methods

scan(tokens, options) click to toggle source

Scan an Array of Token objects and apply any necessary Repeater tags to each token.

tokens - An Array of tokens to scan. options - The Hash of options specified in Chronic::parse.

Returns an Array of tokens.

    # File lib/chronic/repeater.rb, line 11
    def self.scan(tokens, options)
      tokens.each do |token|
        if t = scan_for_season_names(token, options) then token.tag(t); next end
        if t = scan_for_month_names(token, options) then token.tag(t); next end
        if t = scan_for_day_names(token, options) then token.tag(t); next end
        if t = scan_for_day_portions(token, options) then token.tag(t); next end
        if t = scan_for_times(token, options) then token.tag(t); next end
        if t = scan_for_units(token, options) then token.tag(t); next end
      end
    end

scan_for_day_names(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 59
    def self.scan_for_day_names(token, options = {})
      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(u|ur|urs|ers)(day)?$/ => :thursday,
        /^fr[iy](day)?$/ => :friday,
        /^sat(t?[ue]rday)?$/ => :saturday,
        /^su[nm](day)?$/ => :sunday
      }, options
    end

scan_for_day_portions(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 75
    def self.scan_for_day_portions(token, options = {})
      scan_for token, RepeaterDayPortion,
      {
        /^ams?$/ => :am,
        /^pms?$/ => :pm,
        /^mornings?$/ => :morning,
        /^afternoons?$/ => :afternoon,
        /^evenings?$/ => :evening,
        /^(night|nite)s?$/ => :night
      }, options
    end

scan_for_month_names(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 38
    def self.scan_for_month_names(token, options = {})
      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
      }, options
    end

scan_for_season_names(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 25
    def self.scan_for_season_names(token, options = {})
      scan_for token, RepeaterSeasonName,
      {
        /^springs?$/ => :spring,
        /^summers?$/ => :summer,
        /^(autumn)|(fall)s?$/ => :autumn,
        /^winters?$/ => :winter
      }, options
    end

scan_for_times(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 90
    def self.scan_for_times(token, options = {})
      scan_for token, RepeaterTime, /^\d{1,2}(:?\d{1,2})?([\.:]?\d{1,2}([\.:]\d{1,6})?)?$/, options
    end

scan_for_units(token, options = {}) click to toggle source

token - The Token object we want to scan.

Returns a new Repeater object.

    # File lib/chronic/repeater.rb, line 97
    def self.scan_for_units(token, options = {})
      {
        /^years?$/ => :year,
        /^seasons?$/ => :season,
        /^months?$/ => :month,
        /^fortnights?$/ => :fortnight,
        /^weeks?$/ => :week,
        /^weekends?$/ => :weekend,
        /^(week|business)days?$/ => :weekday,
        /^days?$/ => :day,
              /^hrs?$/ => :hour,
        /^hours?$/ => :hour,
              /^mins?$/ => :minute,
        /^minutes?$/ => :minute,
              /^secs?$/ => :second,
        /^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, options)
        end
      end
      return nil
    end

### Public Instance Methods

<=>(other) click to toggle source

    # File lib/chronic/repeater.rb, line 123
    def <=>(other)
      width <=> other.width
    end

next(pointer) click to toggle source

returns the next occurance of this repeatable.

    # File lib/chronic/repeater.rb, line 133
    def next(pointer)
      raise("Start point must be set before calling #next") unless @now
    end

this(pointer) click to toggle source

    # File lib/chronic/repeater.rb, line 137
    def this(pointer)
      raise("Start point must be set before calling #this") unless @now
    end

to_s() click to toggle source

    # File lib/chronic/repeater.rb, line 141
    def to_s
      'repeater'
    end

width() click to toggle source

returns the width (in seconds or months) of this repeatable.

    # File lib/chronic/repeater.rb, line 128
    def width
      raise("Repeater#width must be overridden in subclasses")
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.