Method: When::CalendarNote::ShireWeek#lithe

Defined in:
lib/when_exe/region/shire.rb

#lithe(date, parameter = nil) ⇒ When::TM::TemporalPosition

当日または直前の lithe の日

Parameters:

Returns:



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/when_exe/region/shire.rb', line 103

def lithe(date, parameter=nil)
  event_name = 'lithe'
  date  = date.frame.jul_trans(date, {:events=>[event_name]})
  y,m,d = date.cal_date
  m = date.frame.send(:_to_index,[y,m]) + 1
  h,n   = (m+5).divmod(7)
  dow   = 182 * h[0] + 30 * n + d + 1
  if m==8
    case d
    when 2 ; dow = 0
    when 3 ; dow = date.frame._sum([y]) == 365 ? 1 : 0
    when 4 ; dow = 1
    end
  end
  return date if dow == 0
  date += When::TM::PeriodDuration.new([0,0,-dow])
  date.events = [event_name]
  date
end