when_exe 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
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