Class: Runt::REWeek

Inherits:
Object
  • Object
show all
Includes:
TExpr
Defined in:
lib/runt/temporalexpression.rb

Overview

TExpr that matches days of the week within one week only.

If start and end day are equal, the entire week will match true.

See also: Date

Constant Summary collapse

VALID_RANGE =
0..6

Instance Method Summary collapse

Methods included from TExpr

#&, #-, #and, #dates, #minus, #or, #|

Constructor Details

#initialize(start_day, end_day = 6) ⇒ REWeek

Creates a REWeek using the supplied start day(range = 0..6, where 0=>Sunday) and an optional end day. If an end day is not supplied, the maximum value (6 => Saturday) is assumed.



391
392
393
394
395
# File 'lib/runt/temporalexpression.rb', line 391

def initialize(start_day,end_day=6)
  validate(start_day,end_day)
  @start_day = start_day
  @end_day = end_day
end

Instance Method Details

#include?(date) ⇒ Boolean

Returns:

  • (Boolean)


397
398
399
400
401
402
403
404
# File 'lib/runt/temporalexpression.rb', line 397

def include?(date)
  return true if all_week?
  if @start_day < @end_day
    @start_day<=date.wday && @end_day>=date.wday
  else
    (@start_day<=date.wday && 6 >=date.wday) || (0 <=date.wday && @end_day >=date.wday)
  end
end

#to_sObject



406
407
408
409
# File 'lib/runt/temporalexpression.rb', line 406

def to_s
  return "all week" if all_week?
  "#{Runt.day_name(@start_day)} through #{Runt.day_name(@end_day)}" 
end