TExpr that matches date ranges within a single year. Assumes that the start and end parameters occur within the same year.
Sentinel value used to denote that no specific day was given to create the expression.
REYear.new(start_month [, (start_day | end_month), ...]
start_month
Start month. Valid values are 1..12. When no other parameters are given this value will be used for the end month as well. Matches the entire month through the ending month.
end_month
End month. Valid values are 1..12. When given in two argument form will match through the entire month.
start_month
Start month. Valid values are 1..12.
start_day
Start day. Valid values are 1..31, depending on the month.
end_month
End month. Valid values are 1..12. If a fourth argument is not given, this value will cover through the entire month.
end_day
End day. Valid values are 1..31, depending on the month.
Create a new REYear expression expressing a range of months or days within months within a year.
# Creates the range March 12th through May 23rd expr = REYear.new(3,12,5,23) # Creates the range March 1st through May 31st expr = REYear.new(3,5) # Creates the range March 12th through May 31st expr = REYear.new(3,12,5) # Creates the range March 1st through March 30th expr = REYear.new(3)
# File lib/runt/temporalexpression.rb, line 487 def initialize(start_month, *args) @start_month = start_month if (args.nil? || args.size == NO_DAY) then # One argument given @end_month = start_month @start_day = NO_DAY @end_day = NO_DAY else case args.size when 1 @end_month = args[0] @start_day = NO_DAY @end_day = NO_DAY when 2 @start_day = args[0] @end_month = args[1] @end_day = NO_DAY when 3 @start_day = args[0] @end_month = args[1] @end_day = args[2] else raise "Invalid number of var args: 1 or 3 expected, #{args.size} given" end end @same_month_dates_provided = (@start_month == @end_month) && (@start_day!=NO_DAY && @end_day != NO_DAY) end
# File lib/runt/temporalexpression.rb, line 515 def include?(date) return same_start_month_include_day?(date) && same_end_month_include_day?(date) if @same_month_dates_provided is_between_months?(date) || (same_start_month_include_day?(date) || same_end_month_include_day?(date)) end
# File lib/runt/temporalexpression.rb, line 525 def save "Runt::REYear.new(#{@start_month}, #{@start_day}, #{@end_month}, #{@end_day})" end
# File lib/runt/temporalexpression.rb, line 529 def to_s "#{Runt.month_name(@start_month)} #{Runt.ordinalize(@start_day)} " + "through #{Runt.month_name(@end_month)} #{Runt.ordinalize(@end_day)}" end