when_exe 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. data/bin/irb.rc +1 -0
  2. data/bin/locales.rb +8 -6
  3. data/bin/when.rb +1 -1
  4. data/lib/when_exe.rb +231 -146
  5. data/lib/when_exe/basictypes.rb +108 -18
  6. data/lib/when_exe/calendarnote.rb +263 -116
  7. data/lib/when_exe/calendartypes.rb +413 -22
  8. data/lib/when_exe/coordinates.rb +58 -36
  9. data/lib/when_exe/core/compatibility.rb +8 -6
  10. data/lib/when_exe/core/extension.rb +40 -15
  11. data/lib/when_exe/ephemeris.rb +20 -19
  12. data/lib/when_exe/{region → ephemeris}/moon.rb +4 -4
  13. data/lib/when_exe/{region/ephemeric_notes.rb → ephemeris/notes.rb} +25 -6
  14. data/lib/when_exe/{region → ephemeris}/planets.rb +0 -0
  15. data/lib/when_exe/{region → ephemeris}/sun.rb +7 -3
  16. data/lib/when_exe/{region → ephemeris}/v50.rb +0 -0
  17. data/lib/when_exe/googlecalendar.rb +2 -2
  18. data/lib/when_exe/icalendar.rb +3 -3
  19. data/lib/when_exe/inspect.rb +130 -70
  20. data/lib/when_exe/locales/af.rb +2 -2
  21. data/lib/when_exe/locales/akt.rb +176 -0
  22. data/lib/when_exe/locales/ar.rb +2 -2
  23. data/lib/when_exe/locales/{locales.rb → autoload.rb} +6 -2
  24. data/lib/when_exe/locales/az.rb +2 -2
  25. data/lib/when_exe/locales/bg.rb +2 -2
  26. data/lib/when_exe/locales/bn.rb +2 -2
  27. data/lib/when_exe/locales/bs.rb +2 -2
  28. data/lib/when_exe/locales/ca.rb +2 -2
  29. data/lib/when_exe/locales/cs.rb +2 -2
  30. data/lib/when_exe/locales/cy.rb +2 -2
  31. data/lib/when_exe/locales/da.rb +2 -2
  32. data/lib/when_exe/locales/de.rb +2 -2
  33. data/lib/when_exe/locales/de_AT.rb +2 -2
  34. data/lib/when_exe/locales/de_CH.rb +2 -2
  35. data/lib/when_exe/locales/el.rb +2 -2
  36. data/lib/when_exe/locales/en.rb +2 -2
  37. data/lib/when_exe/locales/en_AU.rb +2 -2
  38. data/lib/when_exe/locales/en_CA.rb +2 -2
  39. data/lib/when_exe/locales/en_GB.rb +2 -2
  40. data/lib/when_exe/locales/en_IE.rb +2 -2
  41. data/lib/when_exe/locales/en_IN.rb +3 -3
  42. data/lib/when_exe/locales/en_NZ.rb +2 -2
  43. data/lib/when_exe/locales/en_US.rb +2 -2
  44. data/lib/when_exe/locales/en_ZA.rb +88 -0
  45. data/lib/when_exe/locales/encoding_conversion.rb +126 -0
  46. data/lib/when_exe/locales/eo.rb +2 -2
  47. data/lib/when_exe/locales/es.rb +2 -2
  48. data/lib/when_exe/locales/es_419.rb +2 -2
  49. data/lib/when_exe/locales/es_AR.rb +2 -2
  50. data/lib/when_exe/locales/es_CL.rb +2 -2
  51. data/lib/when_exe/locales/es_CO.rb +2 -2
  52. data/lib/when_exe/locales/es_CR.rb +2 -2
  53. data/lib/when_exe/locales/es_EC.rb +2 -2
  54. data/lib/when_exe/locales/es_MX.rb +2 -2
  55. data/lib/when_exe/locales/es_PA.rb +2 -2
  56. data/lib/when_exe/locales/es_PE.rb +2 -2
  57. data/lib/when_exe/locales/es_US.rb +84 -0
  58. data/lib/when_exe/locales/es_VE.rb +2 -2
  59. data/lib/when_exe/locales/et.rb +2 -2
  60. data/lib/when_exe/locales/eu.rb +2 -2
  61. data/lib/when_exe/locales/fa.rb +2 -2
  62. data/lib/when_exe/locales/fi.rb +3 -3
  63. data/lib/when_exe/locales/fr.rb +2 -2
  64. data/lib/when_exe/locales/fr_CA.rb +2 -2
  65. data/lib/when_exe/locales/fr_CH.rb +2 -2
  66. data/lib/when_exe/locales/gl.rb +2 -2
  67. data/lib/when_exe/locales/he.rb +3 -3
  68. data/lib/when_exe/locales/hi.rb +2 -2
  69. data/lib/when_exe/locales/hi_IN.rb +2 -2
  70. data/lib/when_exe/locales/hr.rb +2 -2
  71. data/lib/when_exe/locales/hu.rb +6 -5
  72. data/lib/when_exe/locales/iast.rb +90 -0
  73. data/lib/when_exe/locales/id.rb +2 -2
  74. data/lib/when_exe/locales/is.rb +2 -2
  75. data/lib/when_exe/locales/it.rb +2 -2
  76. data/lib/when_exe/locales/it_CH.rb +2 -2
  77. data/lib/when_exe/locales/ja.rb +2 -2
  78. data/lib/when_exe/locales/kn.rb +2 -2
  79. data/lib/when_exe/locales/ko.rb +2 -2
  80. data/lib/when_exe/locales/links.rb +3 -3
  81. data/lib/when_exe/locales/lo.rb +2 -2
  82. data/lib/when_exe/{parts → locales}/locale.rb +77 -49
  83. data/lib/when_exe/locales/lt.rb +6 -2
  84. data/lib/when_exe/locales/lv.rb +2 -2
  85. data/lib/when_exe/locales/mk.rb +2 -2
  86. data/lib/when_exe/locales/mn.rb +2 -2
  87. data/lib/when_exe/locales/ms.rb +2 -2
  88. data/lib/when_exe/locales/nb.rb +2 -2
  89. data/lib/when_exe/locales/ne.rb +2 -2
  90. data/lib/when_exe/locales/nl.rb +2 -2
  91. data/lib/when_exe/locales/nn.rb +2 -2
  92. data/lib/when_exe/locales/or.rb +2 -2
  93. data/lib/when_exe/locales/pl.rb +2 -2
  94. data/lib/when_exe/locales/pt.rb +2 -2
  95. data/lib/when_exe/locales/pt_BR.rb +2 -2
  96. data/lib/when_exe/locales/rm.rb +2 -2
  97. data/lib/when_exe/locales/ro.rb +2 -2
  98. data/lib/when_exe/locales/ru.rb +2 -2
  99. data/lib/when_exe/locales/sk.rb +2 -2
  100. data/lib/when_exe/locales/sl.rb +2 -2
  101. data/lib/when_exe/locales/sr.rb +2 -2
  102. data/lib/when_exe/locales/sv.rb +2 -2
  103. data/lib/when_exe/locales/sw.rb +2 -2
  104. data/lib/when_exe/locales/ta.rb +95 -0
  105. data/lib/when_exe/locales/th.rb +2 -2
  106. data/lib/when_exe/locales/tl.rb +3 -3
  107. data/lib/when_exe/locales/tr.rb +2 -2
  108. data/lib/when_exe/locales/transliteration_table.rb +62 -0
  109. data/lib/when_exe/locales/uk.rb +15 -15
  110. data/lib/when_exe/locales/ur.rb +2 -2
  111. data/lib/when_exe/locales/uz.rb +2 -2
  112. data/lib/when_exe/locales/vi.rb +2 -2
  113. data/lib/when_exe/locales/wo.rb +2 -2
  114. data/lib/when_exe/locales/zh_CN.rb +2 -2
  115. data/lib/when_exe/locales/zh_HK.rb +15 -15
  116. data/lib/when_exe/locales/zh_TW.rb +2 -2
  117. data/lib/when_exe/locales/zh_YUE.rb +77 -0
  118. data/lib/when_exe/mini_application.rb +22 -12
  119. data/lib/when_exe/parts/geometric_complex.rb +16 -1
  120. data/lib/when_exe/parts/method_cash.rb +184 -238
  121. data/lib/when_exe/parts/resource.rb +65 -16
  122. data/lib/when_exe/region/armenian.rb +56 -0
  123. data/lib/when_exe/region/bahai.rb +13 -13
  124. data/lib/when_exe/region/balinese.rb +33 -35
  125. data/lib/when_exe/region/chinese.rb +82 -78
  126. data/lib/when_exe/region/{chinese_calendar.rb → chinese/calendars.rb} +59 -40
  127. data/lib/when_exe/region/{chinese_epoch.rb → chinese/epochs.rb} +3 -4
  128. data/lib/when_exe/region/{chinese_twin.rb → chinese/twins.rb} +48 -51
  129. data/lib/when_exe/region/christian.rb +236 -127
  130. data/lib/when_exe/region/coptic.rb +9 -10
  131. data/lib/when_exe/region/dee.rb +48 -0
  132. data/lib/when_exe/region/discordian.rb +225 -0
  133. data/lib/when_exe/region/far_east.rb +2 -6
  134. data/lib/when_exe/region/french.rb +7 -17
  135. data/lib/when_exe/region/geologicalage.rb +0 -1
  136. data/lib/when_exe/region/goddess.rb +58 -0
  137. data/lib/when_exe/region/indian.rb +323 -231
  138. data/lib/when_exe/region/iranian.rb +159 -22
  139. data/lib/when_exe/region/islamic.rb +7 -9
  140. data/lib/when_exe/region/japanese.rb +14 -803
  141. data/lib/when_exe/region/japanese/calendars.rb +397 -0
  142. data/lib/when_exe/region/japanese/epochs.rb +426 -0
  143. data/lib/when_exe/region/{nihon_shoki.rb → japanese/nihon_shoki.rb} +0 -2
  144. data/lib/when_exe/region/{japanese_notes.rb → japanese/notes.rb} +179 -150
  145. data/lib/when_exe/region/japanese/residues.rb +1306 -0
  146. data/lib/when_exe/region/{japanese_twin.rb → japanese/twins.rb} +12 -15
  147. data/lib/when_exe/region/javanese.rb +16 -14
  148. data/lib/when_exe/region/jewish.rb +8 -9
  149. data/lib/when_exe/region/korean.rb +146 -35
  150. data/lib/when_exe/region/m17n.rb +8 -10
  151. data/lib/when_exe/region/martian.rb +44 -16
  152. data/lib/when_exe/region/mayan.rb +12 -10
  153. data/lib/when_exe/region/pope.rb +0 -1
  154. data/lib/when_exe/region/residue.rb +4 -5
  155. data/lib/when_exe/region/roman.rb +20 -24
  156. data/lib/when_exe/region/ryukyu.rb +3 -4
  157. data/lib/when_exe/region/shire.rb +97 -94
  158. data/lib/when_exe/region/symmetry.rb +50 -0
  159. data/lib/when_exe/region/thai.rb +164 -56
  160. data/lib/when_exe/region/tibetan.rb +86 -86
  161. data/lib/when_exe/region/vietnamese.rb +9 -12
  162. data/lib/when_exe/region/weekdate.rb +80 -0
  163. data/lib/when_exe/region/world.rb +65 -70
  164. data/lib/when_exe/region/yerm.rb +98 -0
  165. data/lib/when_exe/region/zoroastrian.rb +203 -0
  166. data/lib/when_exe/timestandard.rb +4 -4
  167. data/lib/when_exe/tmobjects.rb +1 -3
  168. data/lib/when_exe/tmposition.rb +13 -12
  169. data/lib/when_exe/tmreference.rb +11 -10
  170. data/lib/when_exe/version.rb +1 -1
  171. data/link_to_online_documents +3 -3
  172. data/test/examples/Residue.m17n +1 -1
  173. data/test/examples/Terms.m17n +1 -1
  174. data/test/test.rb +2 -1
  175. data/test/test/basictypes.rb +18 -2
  176. data/test/test/calendarnote.rb +1 -1
  177. data/test/test/calendartypes.rb +1 -1
  178. data/test/test/coordinates.rb +7 -7
  179. data/test/test/{region → ephemeris}/moon.rb +0 -0
  180. data/test/test/{region → ephemeris}/planets.rb +0 -0
  181. data/test/test/{region → ephemeris}/sun.rb +0 -0
  182. data/test/test/parts.rb +8 -13
  183. data/test/test/region/christian.rb +245 -0
  184. data/test/test/region/french.rb +16 -16
  185. data/test/test/region/iran.rb +34 -34
  186. data/test/test/region/japanese.rb +6 -4
  187. data/test/test/region/m17n.rb +8 -7
  188. data/test/test/region/mayan.rb +12 -12
  189. data/test/test/region/residue.rb +20 -4
  190. data/test/test/region/thai.rb +25 -3
  191. data/test/test/region/yerm.rb +146 -0
  192. metadata +39 -20
  193. data/lib/when_exe/region/japanese_residues.rb +0 -1212
  194. data/test/test/region/civil.rb +0 -124
@@ -376,8 +376,8 @@ module When::TimeStandard
376
376
  #
377
377
  def _normalize_time_basis
378
378
 
379
- @_time_basis ||= @time_basis || (@location ? @location.long / When::Coordinates::Spatial::DEGREE * 240 : When.utc)
380
- @_time_basis = When::Parts::Locale._split(@_time_basis) if @_time_basis.kind_of?(String)
379
+ @_time_basis ||= @time_basis || (@location ? @location.long / When::Coordinates::Spatial::DEGREE * 240 : When::UTC)
380
+ @_time_basis = When::Locale._split(@_time_basis) if @_time_basis.kind_of?(String)
381
381
  @_time_basis = [@_time_basis] unless @_time_basis.kind_of?(Array)
382
382
  @_time_basis = @_time_basis.map {|clock| When.Clock(clock)}
383
383
  @_time_basis_offset = @_time_basis.map {|clock| -clock.universal_time / When::TM::Duration::DAY}
@@ -385,9 +385,9 @@ module When::TimeStandard
385
385
  @time_basis = @_time_basis[0] if @time_basis
386
386
 
387
387
  if @_time_basis[0].time_standard.kind_of?(LocalApparentTime)
388
- class << self; include ApparentTimeBasis ; end
388
+ extend ApparentTimeBasis
389
389
  else
390
- class << self; include FixedTimeBasis ; end
390
+ extend FixedTimeBasis
391
391
  end
392
392
  end
393
393
  end
@@ -1299,9 +1299,7 @@ module When::TM
1299
1299
  else ; @duration = nil
1300
1300
  end
1301
1301
  end
1302
- unless @duration
1303
- class << self; include NoDuration; end
1304
- end
1302
+ extend NoDuration unless @duration
1305
1303
  end
1306
1304
 
1307
1305
  # 加減算共通処理
@@ -191,10 +191,10 @@ module When::TM
191
191
  #
192
192
  # @return [When::TM::CalDate, When::TM::DateAndTime]
193
193
  #
194
- def tm_position(options={})
194
+ def tm_pos(options={})
195
195
  When.Calendar(options[:frame] || 'Gregorian').jul_trans(self, options)
196
196
  end
197
- alias :to_tm_position :tm_position
197
+ alias :to_tm_pos :tm_pos
198
198
  end
199
199
 
200
200
  include When
@@ -275,6 +275,7 @@ module When::TM
275
275
  # @option options [String] :tz 時法の指定(時間帯を指定する場合 :clock の替わりに用いることができる)
276
276
  # @option options [Array<Numeric>] :abbr ISO8601上位省略形式のためのデフォルト日付(省略時 指定なし)
277
277
  # @option options [Integer] :extra_year_digits ISO8601拡大表記のための年の構成要素拡大桁数(省略時 1桁)
278
+ # @option options [Integer] :ordinal_date_digits ISO8601拡大表記の年内通日の桁数(省略時 3桁)
278
279
  # @option options [String] :wkst ISO8601週日形式のための暦週開始曜日(省略時 'MO')
279
280
  # @option options [Integer] :precision 生成するオブジェクトの分解能
280
281
  # @option options [When::TimeStandard::TimeStandard] :time_standard 時刻系の指定(省略時 When::TimeStandard::UnversalTime)
@@ -440,7 +441,7 @@ module When::TM
440
441
  clock = Clock.get_clock_option(query)
441
442
  main[:clock] = clock if clock
442
443
  [:indeterminated_position, :frame, :events, :precision,
443
- :era_name, :era, :abbr, :extra_year_digits, :wkst, :time_standard, :location].each do |key|
444
+ :era_name, :era, :abbr, :extra_year_digits, :ordinal_date_digits, :wkst, :time_standard, :location].each do |key|
444
445
  main[key] = query.delete(key) if (query.key?(key))
445
446
  end
446
447
  long = query.delete(:long)
@@ -509,7 +510,7 @@ module When::TM
509
510
  when :week
510
511
  position = ((position + PeriodDuration.new(4, DAY)) & (Residue.day_of_week(options[:wkst]) << 1)) +
511
512
  PeriodDuration.new((w[0]-1)*7 + (w[1]||1)-1, DAY)
512
- position = When::Parts::GeometricComplex.new(position...(position+DurationP1W)) unless w[1]
513
+ position = When::Parts::GeometricComplex.new(position...(position+P1W)) unless w[1]
513
514
  end
514
515
  return position
515
516
  end
@@ -634,7 +635,7 @@ module When::TM
634
635
  #
635
636
  # @return [::DateTime]
636
637
  #
637
- def to_date_time(option={:frame=>When.utc}, start=_default_start)
638
+ def to_date_time(option={:frame=>When::UTC}, start=_default_start)
638
639
  return JulianDate.dynamical_time(dynamical_time, option).to_date_time unless time_standard.rate_of_clock == 1.0
639
640
  raise TypeError, "Clock not assigned" unless clock
640
641
  Rational
@@ -738,7 +739,7 @@ module When::TM
738
739
  def prev
739
740
  @precision==When::DAY ? _force_euqal_day(-1) : self-period
740
741
  rescue RangeError
741
- (When.Calendar('Gregorian') ^ self) - period
742
+ (When::Gregorian ^ self) - period
742
743
  end
743
744
 
744
745
  # 次の日時
@@ -750,7 +751,7 @@ module When::TM
750
751
  def succ
751
752
  @precision==When::DAY ? _force_euqal_day(+1) : self+period
752
753
  rescue RangeError
753
- (When.Calendar('Gregorian') ^ self) + period
754
+ (When::Gregorian ^ self) + period
754
755
  end
755
756
  alias :next :succ
756
757
 
@@ -1000,11 +1001,11 @@ module When::TM
1000
1001
  when date.to_i == jdn
1001
1002
  return date
1002
1003
  when date.to_i > jdn
1003
- next_date = date - When::DurationP1D
1004
- date = (date.to_i == next_date.to_i) ? date - When::DurationP1D * 2 : next_date
1004
+ next_date = date - When::P1D
1005
+ date = (date.to_i == next_date.to_i) ? date - When::P1D * 2 : next_date
1005
1006
  when date.to_i < jdn
1006
- next_date = date + When::DurationP1D
1007
- date = (date.to_i == next_date.to_i) ? date + When::DurationP1D * 2 : next_date
1007
+ next_date = date + When::P1D
1008
+ date = (date.to_i == next_date.to_i) ? date + When::P1D * 2 : next_date
1008
1009
  end
1009
1010
  raise RangeError, "can't find target date: #{self} -> #{jdn}" if done.key?(date.to_i)
1010
1011
  done[date.to_i] = true
@@ -1076,7 +1077,7 @@ module When::TM
1076
1077
  options[:frame] = Clock.get_clock_option(options)
1077
1078
  case time
1078
1079
  when Numeric
1079
- options[:frame] ||= When.utc unless time.kind_of?(Integer)
1080
+ options[:frame] ||= When::UTC unless time.kind_of?(Integer)
1080
1081
  universal_time = (2*time - (2*JulianDate::JD19700101-1)) * Duration::DAY.to_i / 2.0
1081
1082
  when ClockTime
1082
1083
  options[:frame] ||= time.clock
@@ -188,7 +188,7 @@ module When::TM
188
188
  cal_options.delete(:era)
189
189
  unless rate_of_clock == jdt.time_standard.rate_of_clock
190
190
  cal_options.delete(:time_standard)
191
- cal_options[:clock] = @time_basis || When.utc
191
+ cal_options[:clock] = @time_basis || When::UTC
192
192
  jdt = JulianDate.dynamical_time(jdt.dynamical_time, {:time_standard=>time_standard})
193
193
  end
194
194
 
@@ -244,7 +244,7 @@ module When::TM
244
244
  #
245
245
  # @return [Numeric] Universal Time
246
246
  #
247
- def to_universal_time(cal_date, clk_time, clock=When.utc)
247
+ def to_universal_time(cal_date, clk_time, clock=When::UTC)
248
248
  time = clk_time.dup
249
249
  time[0] += _coordinates_to_number(*_decode(cal_date))
250
250
  clock.to_universal_time(time) - When::TM::JulianDate::JD19700101 * When::TM::Duration::DAY
@@ -290,6 +290,7 @@ module When::TM
290
290
  @indices ||= DefaultDateIndices
291
291
  _normalize_spatial
292
292
  _normalize_time_basis
293
+ _default_index_of_MSC
293
294
  _normalize_temporal
294
295
  @reference_frame ||= []
295
296
  end
@@ -371,7 +372,7 @@ module When::TM
371
372
  def _local_time
372
373
  case @local_time
373
374
  when Array ; @local_time
374
- when nil ; @local_time = [false, When.utc]
375
+ when nil ; @local_time = [false, When::UTC]
375
376
  when String ; @local_time = [true, When::Parts::Timezone[@local_time] ||
376
377
  When::V::Timezone[@local_time] ||
377
378
  When.Clock(@local_time)]
@@ -530,7 +531,7 @@ module When::TM
530
531
  # @return [When::TM::ClockTime]
531
532
  #
532
533
  def utc_trans(u_time)
533
- return When.utc.to_clk_time(self.to_universal_time(u_time.clk_time))
534
+ return When::UTC.to_clk_time(self.to_universal_time(u_time.clk_time))
534
535
  end
535
536
  alias :utcTrans :utc_trans
536
537
 
@@ -541,7 +542,7 @@ module When::TM
541
542
  # @return [When::TM::ClockTime]
542
543
  #
543
544
  def clk_trans(clk_time)
544
- return self.to_clk_time(When.utc.to_universal_time(u_time.clk_time))
545
+ return self.to_clk_time(When::UTC.to_universal_time(u_time.clk_time))
545
546
  end
546
547
  alias :clkTrans :clk_trans
547
548
 
@@ -717,7 +718,7 @@ module When::TM
717
718
  @indices ||= DefaultTimeIndices
718
719
 
719
720
  # note
720
- @note ||= 'JulianDayNotes'
721
+ @note ||= 'JulianDay'
721
722
 
722
723
  # normalize spatial module
723
724
  _normalize_spatial
@@ -735,7 +736,7 @@ module When::TM
735
736
  @time_standard = When.Resource(@time_standard||'UniversalTime', '_t:') unless @time_standard.kind_of?(When::TimeStandard)
736
737
 
737
738
  # utc_reference
738
- @utc_reference ||= @zone ? ClockTime.new(@zone.to_s, {:frame=>When.utc}) : Clock.local_time
739
+ @utc_reference ||= @zone ? ClockTime.new(@zone.to_s, {:frame=>When::UTC}) : Clock.local_time
739
740
 
740
741
  # reference_time & origin_of_LSC
741
742
  case @reference_time
@@ -782,7 +783,7 @@ module When::TM
782
783
  # @return [When::TM::DateAndTime] (When::TM::BasicTypes::DateTimeはまちがい)
783
784
  #
784
785
  def transform_coord(c_value)
785
- When.Resource('_c:Gregorian').jul_trans(JulianDate.universal_time(c_value.universal_time, {:frame=>When.utc}))
786
+ When::Gregorian.jul_trans(JulianDate.universal_time(c_value.universal_time, {:frame=>When::UTC}))
786
787
  end
787
788
  alias :transformCoord :transform_coord
788
789
 
@@ -987,7 +988,7 @@ module When::TM
987
988
  args = args.dup
988
989
  options = (args[-1].kind_of?(Hash)) ? args.pop.dup : {}
989
990
  key, epoch, reverse = options.delete(:label) || args
990
- key = When::Parts::Locale.ideographic_unification(key)
991
+ key = When::Locale.ideographic_unification(key)
991
992
  if key.kind_of?(String)
992
993
  key, *parents = key.split(/::/).reverse
993
994
  else
@@ -1535,7 +1536,7 @@ module When::TM
1535
1536
  @epoch ||= epochs
1536
1537
  @epoch[0] ||= '-Infinity'
1537
1538
  @epoch[1] ||= '+Infinity'
1538
- term_options[:options][:frame] ||= When.Resource('_c:Gregorian')
1539
+ term_options[:options][:frame] ||= When::Gregorian
1539
1540
  epoch = ''
1540
1541
  @epoch = @epoch.map {|e|
1541
1542
  case e
@@ -6,5 +6,5 @@
6
6
  =end
7
7
 
8
8
  module When
9
- VERSION = "0.3.5"
9
+ VERSION = "0.3.6"
10
10
  end
@@ -1,4 +1,4 @@
1
1
  See online documents.
2
- wiki: http://www2u.biglobe.ne.jp/~suchowan/u/wiki.cgi?Calendar%2FWhen%2FRuby
3
- yard: http://www2u.biglobe.ne.jp/~suchowan/when_exe/
4
- demo: http://hosi.org:3000
2
+ wiki: http://www2u.biglobe.ne.jp/~suchowan/when_exe_wiki.html
3
+ yard: http://rubydoc.info/gems/when_exe/0.3.5/frames
4
+ demo: http://hosi.org
@@ -6,7 +6,7 @@ BEGIN:B:M17N
6
6
  NAMESPACE:[en=http://en.wikipedia.org/wiki/,
7
7
  ja=http://ja.wikipedia.org/wiki/]
8
8
  LOCALE:[=en:, ja=ja:, alias]
9
- NAMES:[ResidueTerms]
9
+ NAMES:[Residue]
10
10
 
11
11
  BEGIN:CO:RESIDUE
12
12
  LABEL:[Week, 週]
@@ -6,7 +6,7 @@ BEGIN:B:M17n
6
6
  NAMESPACE:[en=http://en.wikipedia.org/wiki/,
7
7
  ja=http://ja.wikipedia.org/wiki/]
8
8
  LOCALE:[=en:, ja=ja:, alias]
9
- NAMES:[CalendarTerms=]
9
+ NAMES:[Calendar=]
10
10
 
11
11
  [Calendars_and_Eras=, 暦法と紀元=]
12
12
 
@@ -45,7 +45,7 @@ require './test/inspect'
45
45
  require './test/googlecalendar'
46
46
  require './test/region/m17n'
47
47
  require './test/region/residue'
48
- require './test/region/civil'
48
+ require './test/region/christian'
49
49
  require './test/region/japanese'
50
50
  require './test/region/chinese'
51
51
  require './test/region/vietnamese'
@@ -57,4 +57,5 @@ require './test/region/mayan'
57
57
  require './test/region/jewish'
58
58
  require './test/region/french'
59
59
  require './test/region/coptic'
60
+ require './test/region/yerm'
60
61
  require './test/region/geologicalage'
@@ -110,6 +110,22 @@ module Test
110
110
  date = When.when?(sample[0], {:abbr=>[1985,15,5]})
111
111
  assert_equal(sample[1], [date.precision, date.to_s])
112
112
  end
113
+
114
+ result = []
115
+ (1900...1928).each do |year|
116
+ date = ::Date.new(year, 1, 1) - 7
117
+ 14.times do
118
+ gdate = When.TemporalPosition(date.year, date.month, date.day)
119
+ strdate = date.strftime('%G-W%V-%u')
120
+ strgdate = gdate.strftime('%G-W%V-%u')
121
+ w1date = When::WeekDate ^ date
122
+ w2date = When.when?(strdate, {:frame=>When::WeekDate})
123
+ strw1date = w1date.strftime
124
+ strw2date = w2date.strftime
125
+ result << [[strdate, strgdate, strw1date, strw2date].uniq.size, date.jd == w1date.to_i, date.jd == w2date.to_i]
126
+ end
127
+ end
128
+ assert_equal([[1, true, true]], result.uniq)
113
129
  end
114
130
 
115
131
  def test__x0301_5_2_4
@@ -123,7 +139,7 @@ module Test
123
139
  end
124
140
 
125
141
  def test__x0301_5_3_1
126
- When::TM::Clock.local_time = When.utc
142
+ When::TM::Clock.local_time = When::UTC
127
143
 
128
144
  [ # 5.3.1 地方時の時刻
129
145
  ["T232050", [ 3, "T23:20:50" ]], # 1 完全表記 基本形式
@@ -352,7 +368,7 @@ ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/
352
368
  NS
353
369
  =jwiki:, en=ewiki:
354
370
  LOCALE
355
- Term3 = When.Resource('_co:CommonResidue::Week::Monday::Monday')
371
+ Term3 = When.Resource('_co:Common::Week::Monday::Monday')
356
372
 
357
373
  def test__code_space
358
374
  assert_equal('zip', Term1.codeSpace)
@@ -8,7 +8,7 @@
8
8
 
9
9
  module Test::CalendarNote
10
10
 
11
- class Notes < Test::Unit::TestCase
11
+ class NotesContainer < Test::Unit::TestCase
12
12
 
13
13
  def test__lunar_phases
14
14
  assert_equal([[{:note=>"月相", :value=>"朔(-233/3040)", :position=>"中段"}]],
@@ -10,7 +10,7 @@ module Test::CalendarTypes
10
10
 
11
11
  class UTC < Test::Unit::TestCase
12
12
  def test__utc
13
- assert_equal("+00:00", When.utc.tzname[0].to_s)
13
+ assert_equal("+00:00", When::UTC.tzname[0].to_s)
14
14
  end
15
15
  end
16
16
 
@@ -150,16 +150,16 @@ module Test::Coordinates
150
150
  sample =[
151
151
  ["明治", "http://ja.wikipedia.org/wiki/%E6%98%8E%E6%B2%BB"],
152
152
  ["Meiji", "http://en.wikipedia.org/wiki/Meiji_period"],
153
- ["M", ""],
153
+ ["M", "http://ja.wikipedia.org/wiki/%E6%98%8E%E6%B2%BB"],
154
154
  ["大正", "http://ja.wikipedia.org/wiki/%E5%A4%A7%E6%AD%A3"],
155
155
  ["Taishō", "http://en.wikipedia.org/wiki/Taish%C5%8D_period"],
156
- ["T", ""],
156
+ ["T", "http://ja.wikipedia.org/wiki/%E5%A4%A7%E6%AD%A3"],
157
157
  ["昭和", "http://ja.wikipedia.org/wiki/%E6%98%AD%E5%92%8C"],
158
158
  ["Shōwa", "http://en.wikipedia.org/wiki/Sh%C5%8Dwa_period"],
159
- ["S", ""],
159
+ ["S", "http://ja.wikipedia.org/wiki/%E6%98%AD%E5%92%8C"],
160
160
  ["平成", "http://ja.wikipedia.org/wiki/%E5%B9%B3%E6%88%90"],
161
161
  ["Heisei", "http://en.wikipedia.org/wiki/Heisei_period"],
162
- ["H", ""]
162
+ ["H", "http://ja.wikipedia.org/wiki/%E5%B9%B3%E6%88%90"]
163
163
  ]
164
164
  ['明治', '大正', '昭和', '平成'].each do |nengo|
165
165
  era = When::era(nengo)
@@ -194,7 +194,7 @@ module Test::Coordinates
194
194
  # 空間位置
195
195
  #
196
196
  class Spatial < Test::Unit::TestCase
197
- IndianCities = [
197
+ Indian = [
198
198
  ["CentralIndia",
199
199
  "インド中部",
200
200
  "http://en.wikipedia.org/wiki/CentralIndia",
@@ -365,8 +365,8 @@ module Test::Coordinates
365
365
  end
366
366
 
367
367
  def test__spatial_m17n
368
- ['_co:IndianCities', 'examples/Spatial.m17n'].each do |iri|
369
- samples = IndianCities.dup
368
+ ['_co:Indian', 'examples/Spatial.m17n'].each do |iri|
369
+ samples = Indian.dup
370
370
  assert_equal(samples.size, When.Resource(iri).child.size)
371
371
  When.Resource(iri).child.each do |obj|
372
372
  name = obj.label
File without changes
File without changes
@@ -75,11 +75,6 @@ module Test::Parts
75
75
  end
76
76
  end
77
77
 
78
- class SnapShot < Test::Unit::TestCase
79
- def test_nothing
80
- end
81
- end
82
-
83
78
  class Locale < Test::Unit::TestCase
84
79
  Term1 = When.m17n('Tokyo', 'zip')
85
80
  Term2 = When.m17n(<<LABEL, <<NS, <<LOCALE)
@@ -92,7 +87,7 @@ ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/
92
87
  NS
93
88
  =jwiki:, en=ewiki:
94
89
  LOCALE
95
- Term3 = When.Resource('_co:CommonResidue::Week::Monday::Monday')
90
+ Term3 = When.Resource('_co:Common::Week::Monday::Monday')
96
91
 
97
92
  def test__locale
98
93
  assert_equal("Tokyo", Term1.translate('en_US'))
@@ -128,16 +123,16 @@ LOCALE
128
123
  assert_equal(["閏長月", String], [date.name('Month').to_s, date.name('Month').to_s.class])
129
124
  assert_equal("http://ja.wikipedia.org/wiki/%E9%96%8F", date.name('Month').reference('ja'))
130
125
  assert_equal("閏長月", date.name('Month').translate('日本語'))
131
- assert_equal("Intercalary 9th Month", date.name('Month').translate('en_US'))
126
+ assert_equal("Intercalary Month 9", date.name('Month').translate('en_US'))
132
127
  end
133
128
 
134
129
  def test__split
135
- assert_equal(['' ], When::Parts::Locale._split(''))
136
- assert_equal(['3.14' ], When::Parts::Locale._split('3.14'))
137
- assert_equal(['3.14', ''], When::Parts::Locale._split('3.14,'))
138
- assert_equal(['', '3.14'], When::Parts::Locale._split(',3.14'))
139
- assert_equal(['3.14', ' "3.14,159"'], When::Parts::Locale._split('3.14, "3.14,159"'))
140
- assert_equal(['3.14', ' "3.14\\"159"'], When::Parts::Locale._split('3.14, "3.14\\"159"'))
130
+ assert_equal(['' ], When::Locale._split(''))
131
+ assert_equal(['3.14' ], When::Locale._split('3.14'))
132
+ assert_equal(['3.14', ''], When::Locale._split('3.14,'))
133
+ assert_equal(['', '3.14'], When::Locale._split(',3.14'))
134
+ assert_equal(['3.14', ' "3.14,159"'], When::Locale._split('3.14, "3.14,159"'))
135
+ assert_equal(['3.14', ' "3.14\\"159"'], When::Locale._split('3.14, "3.14\\"159"'))
141
136
  end
142
137
  end
143
138
 
@@ -0,0 +1,245 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2012-2014 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license
6
+ described in the LICENSE.txt file included in this archive.
7
+ =end
8
+
9
+ module Test
10
+
11
+ class ChristianVariation < Test::Unit::TestCase
12
+
13
+ def verify_built_in_date(calendar, start, length)
14
+ date = Date.new(start, 1, 1)
15
+ diff = {}
16
+ while date.year < start + length
17
+ cal_date = [date.year, date.month, date.day]
18
+ cal_jdn = date.jd
19
+ fdate = When.TemporalPosition(date.year, date.month, date.day, {:frame=>calendar})
20
+ rdate = calendar ^ cal_jdn
21
+ [fdate, rdate].each do |tdate|
22
+ [[cal_date, tdate.cal_date], [cal_jdn, tdate.to_i]].each do |verify|
23
+ unless verify.uniq.size == 1
24
+ diff[cal_date] ||= []
25
+ diff[cal_date] << verify[1]
26
+ end
27
+ end
28
+ end
29
+ date = yield(date)
30
+ end
31
+ diff
32
+ end
33
+
34
+ def test__verify_to_built_in_date
35
+
36
+ sample = [{}, {}, {}, {}, {}, {[2900, 1, 1]=>[2780263, [2900, 1, 2]]}]
37
+
38
+ %w(Gregorian RevisedJulian).each do |name|
39
+ calendar = When.Calendar(name)
40
+ assert_equal(sample.shift, verify_built_in_date(calendar, 1900, 8) {|date| date + 1})
41
+ assert_equal(sample.shift, verify_built_in_date(calendar, 2000,400) {|date| date >> 1})
42
+ assert_equal(sample.shift, verify_built_in_date(calendar, 2400,900) {|date| date >> 1200})
43
+ end
44
+ end
45
+
46
+ def test__gregorian_date
47
+
48
+ calendar = When.Calendar('Gregorian')
49
+
50
+ dates = [When.when?('1900-02-28', {:frame=>calendar})]
51
+ 9.times do
52
+ dates << dates.last + When::P1Y * 100
53
+ end
54
+ assert_equal([2415079, 2451603, 2488128, 2524652, 2561176,
55
+ 2597700, 2634225, 2670749, 2707273, 2743797], dates.map {|date| date.to_i})
56
+ assert_equal(%w(1900-02-28 2000-02-28 2100-02-28 2200-02-28 2300-02-28
57
+ 2400-02-28 2500-02-28 2600-02-28 2700-02-28 2800-02-28), dates.map {|date| (calendar ^ date.to_i).to_s})
58
+ assert_equal([28, 29, 28, 28, 28, 29, 28, 28, 28, 29], dates.map {|date| date.length(When::MONTH)})
59
+
60
+ dates = [When.when?('1900-03-01', {:frame=>calendar})]
61
+ 9.times do
62
+ dates << dates.last + When::P1Y * 100
63
+ end
64
+ assert_equal([2415080, 2451605, 2488129, 2524653, 2561177,
65
+ 2597702, 2634226, 2670750, 2707274, 2743799], dates.map {|date| date.to_i})
66
+ assert_equal(%w(1900-03-01 2000-03-01 2100-03-01 2200-03-01 2300-03-01
67
+ 2400-03-01 2500-03-01 2600-03-01 2700-03-01 2800-03-01), dates.map {|date| (calendar ^ date.to_i).to_s})
68
+ assert_equal([1], dates.map {|date| calendar._century_from_jdn(date.to_i) - calendar._century_from_jdn(date.to_i-1)}.uniq)
69
+ end
70
+
71
+ def test__revised_julian_date
72
+
73
+ calendar = When.Calendar('RevisedJulian')
74
+
75
+ dates = [When.when?('1900-02-28', {:frame=>calendar})]
76
+ 9.times do
77
+ dates << dates.last + When::P1Y * 100
78
+ end
79
+ assert_equal([2415079, 2451603, 2488128, 2524652, 2561176,
80
+ 2597700, 2634225, 2670749, 2707273, 2743797], dates.map {|date| date.to_i})
81
+ assert_equal(%w(1900-02-28 2000-02-28 2100-02-28 2200-02-28 2300-02-28
82
+ 2400-02-28 2500-02-28 2600-02-28 2700-02-28 2800-02-28), dates.map {|date| (calendar ^ date.to_i).to_s})
83
+ assert_equal([28, 29, 28, 28, 28, 29, 28, 28, 28, 28], dates.map {|date| date.length(When::MONTH)})
84
+
85
+ dates = [When.when?('1900-03-01', {:frame=>calendar})]
86
+ 9.times do
87
+ dates << dates.last + When::P1Y * 100
88
+ end
89
+ assert_equal([2415080, 2451605, 2488129, 2524653, 2561177,
90
+ 2597702, 2634226, 2670750, 2707274, 2743798], dates.map {|date| date.to_i})
91
+ assert_equal(%w(1900-03-01 2000-03-01 2100-03-01 2200-03-01 2300-03-01
92
+ 2400-03-01 2500-03-01 2600-03-01 2700-03-01 2800-03-01), dates.map {|date| (calendar ^ date.to_i).to_s})
93
+ assert_equal([1], dates.map {|date| calendar._century_from_jdn(date.to_i) - calendar._century_from_jdn(date.to_i-1)}.uniq)
94
+ end
95
+ end
96
+
97
+ class Swedish < Test::Unit::TestCase
98
+ def test__swedish_date
99
+
100
+ dates = []
101
+ jdns = []
102
+ [2342042, 2346424].each do |base|
103
+ (-3..+3).each do |diff|
104
+ jdn = base + diff
105
+ jdate = When::Julian ^ jdn
106
+ s1date = When::Swedish ^ jdn
107
+ s2date = When.tm_pos(*(s1date.cal_date + [{:frame=>When::Swedish}]))
108
+ dates << s1date.to_s
109
+ jdns << [s1date.to_s == s2date.to_s, s1date.to_i == jdn, s2date.to_i == jdn].uniq
110
+ end
111
+ end
112
+
113
+ assert_equal(%w(1700-02-26 1700-02-27 1700-02-28 1700-03-01 1700-03-02 1700-03-03 1700-03-04
114
+ 1712-02-26 1712-02-27 1712-02-28 1712-02-29 1712-02-30 1712-03-01 1712-03-02), dates)
115
+ assert_equal([[true]], jdns.uniq)
116
+ end
117
+
118
+ def test__swedish_easter
119
+
120
+ dates = []
121
+ civil = When.Calendar('Civil?old=Swedish&reform_date=1753-03-01')
122
+ ((1700..1711).to_a + (1740..1752).to_a+[1802,1805,1818]).each do |year|
123
+ dates << When.tm_pos(year, {:frame=>civil}).easter.to_s
124
+ end
125
+ assert_equal(%w(1700-04-01 1701-04-21 1702-04-06 1703-03-29 1704-04-17 1705-04-02 1706-03-25
126
+ 1707-04-14 1708-04-05 1709-04-18 1710-04-10 1711-03-26 1740-04-06 1741-03-22
127
+ 1742-03-14 1743-04-03 1744-03-18 1745-04-07 1746-03-30 1747-03-22 1748-04-03
128
+ 1749-03-26 1750-03-18 1751-03-31 1752-03-22 1802-04-25 1805-04-21 1818-03-29), dates)
129
+ end
130
+ end
131
+
132
+ class Civil < Test::Unit::TestCase
133
+ def test__border
134
+ frame = When.Calendar('Civil?reform=1752-9-14&border=0-3-25(1753)0-1-1')
135
+ assert_equal("1641=03-24", (frame ^ When.when?('1642-4-3') ).to_s)
136
+ assert_equal("1642-03-25", (frame ^ When.when?('1642-4-4') ).to_s)
137
+ assert_equal("1752-12-31", (frame ^ When.when?('1752-12-31')).to_s)
138
+ assert_equal("1753-01-01", (frame ^ When.when?('1753-1-1') ).to_s)
139
+ assert_equal("1753-03-24", (frame ^ When.when?('1753-3-24') ).to_s)
140
+ assert_equal("1753-03-25", (frame ^ When.when?('1753-3-25') ).to_s)
141
+ end
142
+
143
+ def test__reform_inc
144
+ sample = %w(
145
+ 1582-09-30 1582-10-01 1582-10-02 1582-10-03 1582-10-04 1582-10-15 1582-10-16 1582-10-17
146
+ 1582-10-18 1582-10-19 1582-10-20 1582-10-21 1582-10-22 1582-10-23 1582-10-24 1582-10-25
147
+ 1582-10-26 1582-10-27 1582-10-28 1582-10-29 1582-10-30 1582-10-31 1582-11-01 1582-11-02
148
+ 1582-11-03)
149
+ date = When.when?('1582-9-30', :frame=>'Civil?reform=1582-10-15')
150
+ 25.times do
151
+ assert_equal(sample.shift, date.to_s)
152
+ date = date + When::P1D
153
+ end
154
+ end
155
+
156
+ def test__reform_dec
157
+ sample = %w(
158
+ 1582-11-01 1582-10-31 1582-10-30 1582-10-29 1582-10-28 1582-10-27 1582-10-26 1582-10-25
159
+ 1582-10-24 1582-10-23 1582-10-22 1582-10-21 1582-10-20 1582-10-19 1582-10-18 1582-10-17
160
+ 1582-10-16 1582-10-15 1582-10-04 1582-10-03 1582-10-02 1582-10-01 1582-09-30 1582-09-29
161
+ 1582-09-28)
162
+ date = When.when?('1582-11-01', :frame=>'Civil?reform=1582-10-15')
163
+ 25.times do
164
+ assert_equal(sample.shift, date.to_s)
165
+ date = date - When::P1D
166
+ end
167
+ end
168
+
169
+ def test__reform_year
170
+ date = When.when?('1752^^Civil?reform=1752-9-14&border=(1000)0-3-25(1753)0-1-1')
171
+ assert_equal(
172
+ [[1752,
173
+ [[3,
174
+ ["*", 1, 2, 3, 4, 5, 6, 7],
175
+ ["*", 8, 9, 10, 11, 12, 13, 14],
176
+ ["*", 15, 16, 17, 18, 19, 20, 21],
177
+ ["*", 22, 23, 24, 25, 26, 27, 28],
178
+ ["*", 29, 30, 31, "*", "*", "*", "*"]]],
179
+ [[4,
180
+ ["*", "*", "*", "*", 1, 2, 3, 4],
181
+ ["*", 5, 6, 7, 8, 9, 10, 11],
182
+ ["*", 12, 13, 14, 15, 16, 17, 18],
183
+ ["*", 19, 20, 21, 22, 23, 24, 25],
184
+ ["*", 26, 27, 28, 29, 30, "*", "*"]]],
185
+ [[5,
186
+ ["*", "*", "*", "*", "*", "*", 1, 2],
187
+ ["*", 3, 4, 5, 6, 7, 8, 9],
188
+ ["*", 10, 11, 12, 13, 14, 15, 16],
189
+ ["*", 17, 18, 19, 20, 21, 22, 23],
190
+ ["*", 24, 25, 26, 27, 28, 29, 30],
191
+ ["*", 31, "*", "*", "*", "*", "*", "*"]]],
192
+ [[6,
193
+ ["*", "*", 1, 2, 3, 4, 5, 6],
194
+ ["*", 7, 8, 9, 10, 11, 12, 13],
195
+ ["*", 14, 15, 16, 17, 18, 19, 20],
196
+ ["*", 21, 22, 23, 24, 25, 26, 27],
197
+ ["*", 28, 29, 30, "*", "*", "*", "*"]]],
198
+ [[7,
199
+ ["*", "*", "*", "*", 1, 2, 3, 4],
200
+ ["*", 5, 6, 7, 8, 9, 10, 11],
201
+ ["*", 12, 13, 14, 15, 16, 17, 18],
202
+ ["*", 19, 20, 21, 22, 23, 24, 25],
203
+ ["*", 26, 27, 28, 29, 30, 31, "*"]]],
204
+ [[8,
205
+ ["*", "*", "*", "*", "*", "*", "*", 1],
206
+ ["*", 2, 3, 4, 5, 6, 7, 8],
207
+ ["*", 9, 10, 11, 12, 13, 14, 15],
208
+ ["*", 16, 17, 18, 19, 20, 21, 22],
209
+ ["*", 23, 24, 25, 26, 27, 28, 29],
210
+ ["*", 30, 31, "*", "*", "*", "*", "*"]]],
211
+ [[9,
212
+ ["*", "*", "*", 1, 2, 14, 15, 16],
213
+ ["*", 17, 18, 19, 20, 21, 22, 23],
214
+ ["*", 24, 25, 26, 27, 28, 29, 30]]],
215
+ [[10,
216
+ ["*", 1, 2, 3, 4, 5, 6, 7],
217
+ ["*", 8, 9, 10, 11, 12, 13, 14],
218
+ ["*", 15, 16, 17, 18, 19, 20, 21],
219
+ ["*", 22, 23, 24, 25, 26, 27, 28],
220
+ ["*", 29, 30, 31, "*", "*", "*", "*"]]],
221
+ [[11,
222
+ ["*", "*", "*", "*", 1, 2, 3, 4],
223
+ ["*", 5, 6, 7, 8, 9, 10, 11],
224
+ ["*", 12, 13, 14, 15, 16, 17, 18],
225
+ ["*", 19, 20, 21, 22, 23, 24, 25],
226
+ ["*", 26, 27, 28, 29, 30, "*", "*"]]],
227
+ [[12,
228
+ ["*", "*", "*", "*", "*", "*", 1, 2],
229
+ ["*", 3, 4, 5, 6, 7, 8, 9],
230
+ ["*", 10, 11, 12, 13, 14, 15, 16],
231
+ ["*", 17, 18, 19, 20, 21, 22, 23],
232
+ ["*", 24, 25, 26, 27, 28, 29, 30],
233
+ ["*", 31, "*", "*", "*", "*", "*", "*"]]]]],
234
+ date.year_included('Sunday') {|d,b|
235
+ case b
236
+ when When::YEAR ; d[When::YEAR]
237
+ when When::MONTH ; d[When::MONTH]
238
+ when When::DAY ; d[When::DAY]
239
+ else ; '*'
240
+ end
241
+ }
242
+ )
243
+ end
244
+ end
245
+ end