Class: DaruLite::Offsets::Week

Inherits:
DateOffset show all
Defined in:
lib/daru_lite/date_time/offsets.rb

Instance Method Summary collapse

Methods inherited from DateOffset

#-@

Constructor Details

#initialize(*args) ⇒ Week

Returns a new instance of Week.



221
222
223
224
225
# File 'lib/daru_lite/date_time/offsets.rb', line 221

def initialize(*args)
  @n = args[0].is_a?(Hash) ? 1 : args[0]
  opts = args[-1]
  @weekday = opts[:weekday] || 0
end

Instance Method Details

#+(other) ⇒ Object



227
228
229
230
231
232
233
234
235
# File 'lib/daru_lite/date_time/offsets.rb', line 227

def +(other)
  wday = other.wday
  distance = (@weekday - wday).abs
  if @weekday > wday
    other + distance + (7 * (@n - 1))
  else
    other + (7 - distance) + (7 * (@n - 1))
  end
end

#-(other) ⇒ Object



237
238
239
240
241
242
243
244
245
# File 'lib/daru_lite/date_time/offsets.rb', line 237

def -(other)
  wday = other.wday
  distance = (@weekday - wday).abs
  if @weekday >= wday
    other - ((7 - distance) + (7 * (@n - 1)))
  else
    other - (distance + (7 * (@n - 1)))
  end
end

#freq_stringObject



251
252
253
# File 'lib/daru_lite/date_time/offsets.rb', line 251

def freq_string
  "#{@n == 1 ? '' : @n.to_s}W-#{DaruLite::DAYS_OF_WEEK.key(@weekday)}"
end

#on_offset?(date_time) ⇒ Boolean

Returns:

  • (Boolean)


247
248
249
# File 'lib/daru_lite/date_time/offsets.rb', line 247

def on_offset?(date_time)
  date_time.wday == @weekday
end