when_exe 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +36 -33
  3. data/bin/locales.rb +1 -1
  4. data/bin/make_ttl.rb.config +1 -1
  5. data/lib/when_exe.rb +27 -16
  6. data/lib/when_exe/basictypes.rb +772 -771
  7. data/lib/when_exe/calendartypes.rb +1485 -1453
  8. data/lib/when_exe/coordinates.rb +5 -0
  9. data/lib/when_exe/core/compatibility.rb +1 -1
  10. data/lib/when_exe/core/duration.rb +147 -116
  11. data/lib/when_exe/core/extension.rb +499 -497
  12. data/lib/when_exe/ephemeris.rb +1952 -1951
  13. data/lib/when_exe/ephemeris/eclipse.rb +5 -4
  14. data/lib/when_exe/ephemeris/notes.rb +457 -421
  15. data/lib/when_exe/ephemeris/planets.rb +585 -585
  16. data/lib/when_exe/ephemeris/sun.rb +214 -214
  17. data/lib/when_exe/google_api.rb +153 -0
  18. data/lib/when_exe/icalendar.rb +1640 -1632
  19. data/lib/when_exe/inspect.rb +42 -20
  20. data/lib/when_exe/linkeddata.rb +28 -7
  21. data/lib/when_exe/locales/autoload.rb +2 -1
  22. data/lib/when_exe/locales/locale.rb +35 -15
  23. data/lib/when_exe/locales/zh.rb +77 -0
  24. data/lib/when_exe/mini_application.rb +3 -1
  25. data/lib/when_exe/{googlecalendar.rb → obsolete/googlecalendar.rb} +144 -144
  26. data/lib/when_exe/parts/enumerator.rb +498 -486
  27. data/lib/when_exe/parts/geometric_complex.rb +397 -397
  28. data/lib/when_exe/parts/timezone.rb +246 -241
  29. data/lib/when_exe/region/armenian.rb +55 -56
  30. data/lib/when_exe/region/babylonian.rb +406 -405
  31. data/lib/when_exe/region/bahai.rb +107 -106
  32. data/lib/when_exe/region/balinese.rb +624 -622
  33. data/lib/when_exe/region/chinese.rb +1071 -1026
  34. data/lib/when_exe/region/chinese/epochs.rb +28 -28
  35. data/lib/when_exe/region/chinese/notes.rb +219 -0
  36. data/lib/when_exe/region/chinese/twins.rb +803 -803
  37. data/lib/when_exe/region/christian.rb +21 -15
  38. data/lib/when_exe/region/coptic.rb +107 -106
  39. data/lib/when_exe/region/discordian.rb +218 -218
  40. data/lib/when_exe/region/east_asian.rb +1 -1
  41. data/lib/when_exe/region/french.rb +126 -56
  42. data/lib/when_exe/region/geologicalage.rb +639 -639
  43. data/lib/when_exe/region/goddess.rb +60 -58
  44. data/lib/when_exe/region/hanke_henry.rb +2 -2
  45. data/lib/when_exe/region/indian.rb +1225 -1222
  46. data/lib/when_exe/region/international_fixed.rb +96 -97
  47. data/lib/when_exe/region/iranian.rb +206 -203
  48. data/lib/when_exe/region/islamic.rb +102 -102
  49. data/lib/when_exe/region/japanese.rb +126 -71
  50. data/lib/when_exe/region/japanese/epochs.rb +426 -426
  51. data/lib/when_exe/region/japanese/notes.rb +101 -81
  52. data/lib/when_exe/region/japanese/residues.rb +1345 -1311
  53. data/lib/when_exe/region/japanese/twins.rb +225 -225
  54. data/lib/when_exe/region/japanese/weeks.rb +112 -112
  55. data/lib/when_exe/region/javanese.rb +230 -230
  56. data/lib/when_exe/region/jewish.rb +130 -131
  57. data/lib/when_exe/region/m17n.rb +114 -114
  58. data/lib/when_exe/region/martian.rb +258 -258
  59. data/lib/when_exe/region/mayan.rb +11 -8
  60. data/lib/when_exe/region/pax.rb +4 -5
  61. data/lib/when_exe/region/pope.rb +1 -1
  62. data/lib/when_exe/region/positivist.rb +100 -100
  63. data/lib/when_exe/region/residue.rb +162 -162
  64. data/lib/when_exe/region/roman.rb +333 -333
  65. data/lib/when_exe/region/{soviet.rb → russian.rb} +221 -209
  66. data/lib/when_exe/region/shire.rb +222 -223
  67. data/lib/when_exe/region/symmetry.rb +50 -50
  68. data/lib/when_exe/region/thai.rb +336 -336
  69. data/lib/when_exe/region/tibetan.rb +315 -316
  70. data/lib/when_exe/region/tranquility.rb +207 -208
  71. data/lib/when_exe/region/vanishing_leprechaun.rb +3 -1
  72. data/lib/when_exe/region/vietnamese.rb +449 -440
  73. data/lib/when_exe/region/weekdate.rb +80 -80
  74. data/lib/when_exe/region/world.rb +170 -171
  75. data/lib/when_exe/region/world_season.rb +89 -89
  76. data/lib/when_exe/region/yerm.rb +3 -3
  77. data/lib/when_exe/region/zoroastrian.rb +205 -205
  78. data/lib/when_exe/timestandard.rb +708 -707
  79. data/lib/when_exe/tmduration.rb +338 -338
  80. data/lib/when_exe/tmobjects.rb +1356 -1356
  81. data/lib/when_exe/tmposition.rb +66 -31
  82. data/lib/when_exe/version.rb +16 -2
  83. data/test/examples/Residue.m17n +83 -83
  84. data/test/examples/Terms.m17n +2 -2
  85. data/test/test.rb +2 -2
  86. data/test/test/google_api.rb +65 -0
  87. data/test/test/linkeddata.rb +1 -1
  88. data/test/test/{googlecalendar.rb → obsolete/googlecalendar.rb} +194 -194
  89. data/test/test/region/indian.rb +90 -85
  90. data/test/test/region/m17n.rb +7 -7
  91. data/test/test/region/mayan.rb +195 -195
  92. data/test/test/region/residue.rb +153 -153
  93. data/test/test/tmposition.rb +11 -1
  94. data/when_exe.gemspec +2 -2
  95. metadata +95 -8
  96. data/test/test.rb.config +0 -1
@@ -1,80 +1,80 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2014 Takashi SUGA
4
-
5
- You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
- =end
7
-
8
- module When
9
-
10
- class BasicTypes::M17n
11
-
12
- WeekDate = [self, [
13
- "locale:[=en:, ja]",
14
- "names:[WeekDate=en:ISO_week_date, 暦週=]",
15
- [self, "names:[week]"] + (1...100).to_a.map {|m| "Week #{m}"},
16
- ]]
17
- end
18
-
19
- module CalendarTypes
20
-
21
- #
22
- # Week Date Calendar
23
- #
24
- class WeekDate < TableBased
25
-
26
- private
27
-
28
- #
29
- # Object Normalization
30
- #
31
- def _normalize(args=[], options={})
32
- @label ||= 'WeekDate'
33
- @period ||= 7 # length of week
34
- @first ||= 0 # first day of week
35
- @margin ||= 3 # first day of year
36
- @strftime ||= @period < 10 ? '%Y-W%m-%q' : '%Y-W%m-%d'
37
- @engine ||= 'Gregorian'
38
- @engine = When.Calendar(@engine)
39
- @indices ||= [
40
- When.Index('WeekDate::week'),
41
- When::Coordinates::DefaultDayIndex
42
- ]
43
- @rule_table ||= _generate_rule
44
- raise ArgumentError, 'Too many weeks in a year' if @rule_table.keys.max / @period >= 100
45
- super
46
- end
47
-
48
- # 年初の通日
49
- #
50
- # @param [Array<Numeric>] date ( 年 )
51
- #
52
- # @return [Integer] 年初の通日
53
- #
54
- def _sdn_(date)
55
- year = +date[0] - @engine.origin_of_MSC
56
- sdn0 = @margin + @engine._coordinates_to_number(year, 0, 0)
57
- sdn1 = @first + @period * sdn0.div(@period)
58
- sdn1 -= @period if sdn1 > sdn0
59
- sdn1
60
- end
61
-
62
- # @private
63
- def _generate_rule
64
- hash = {}
65
- _week_number_range.each do |length|
66
- hash[@period * length] = {'Length'=>[@period] * length}
67
- end
68
- hash
69
- end
70
-
71
- # @private
72
- def _week_number_range
73
- return 52..53 if @engine.kind_of?(When::CalendarTypes::Christian)
74
- starts = (0..19).to_a.map {|year| @engine._coordinates_to_number(year, 0, 0)}
75
- lengths = (0..18).to_a.map {|year| starts[year+1] - starts[year]}
76
- (lengths.min / @period)..((lengths.max + @period - 1) / @period)
77
- end
78
- end
79
- end
80
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2014-2015 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ WeekDate = [self, [
13
+ "locale:[=en:, ja, zh]",
14
+ "names:[WeekDate=en:ISO_week_date, 暦週=, 曆週=]",
15
+ [self, "names:[week, 週, 星期]"] + (1...100).to_a.map {|m| "[Week #{m}=, ja:第#{m}週=, zh:第#{m}週=]"},
16
+ ]]
17
+ end
18
+
19
+ module CalendarTypes
20
+
21
+ #
22
+ # Week Date Calendar
23
+ #
24
+ class WeekDate < TableBased
25
+
26
+ private
27
+
28
+ #
29
+ # Object Normalization
30
+ #
31
+ def _normalize(args=[], options={})
32
+ @label ||= 'WeekDate'
33
+ @period ||= 7 # length of week
34
+ @first ||= 0 # first day of week
35
+ @margin ||= 3 # first day of year
36
+ @strftime ||= @period < 10 ? '%Y-W%m-%q' : '%Y-W%m-%d'
37
+ @engine ||= 'Gregorian'
38
+ @engine = When.Calendar(@engine)
39
+ @indices ||= [
40
+ When.Index('WeekDate::week'),
41
+ When::Coordinates::DefaultDayIndex
42
+ ]
43
+ @rule_table ||= _generate_rule
44
+ raise ArgumentError, 'Too many weeks in a year' if @rule_table.keys.max / @period >= 100
45
+ super
46
+ end
47
+
48
+ # 年初の通日
49
+ #
50
+ # @param [Array<Numeric>] date ( 年 )
51
+ #
52
+ # @return [Integer] 年初の通日
53
+ #
54
+ def _sdn_(date)
55
+ year = +date[0] - @engine.origin_of_MSC
56
+ sdn0 = @margin + @engine._coordinates_to_number(year, 0, 0)
57
+ sdn1 = @first + @period * sdn0.div(@period)
58
+ sdn1 -= @period if sdn1 > sdn0
59
+ sdn1
60
+ end
61
+
62
+ # @private
63
+ def _generate_rule
64
+ hash = {}
65
+ _week_number_range.each do |length|
66
+ hash[@period * length] = {'Length'=>[@period] * length}
67
+ end
68
+ hash
69
+ end
70
+
71
+ # @private
72
+ def _week_number_range
73
+ return 52..53 if @engine.kind_of?(When::CalendarTypes::Christian)
74
+ starts = (0..19).to_a.map {|year| @engine._coordinates_to_number(year, 0, 0)}
75
+ lengths = (0..18).to_a.map {|year| starts[year+1] - starts[year]}
76
+ (lengths.min / @period)..((lengths.max + @period - 1) / @period)
77
+ end
78
+ end
79
+ end
80
+ end
@@ -1,171 +1,170 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2011-2014 Takashi SUGA
4
-
5
- You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
- =end
7
-
8
- module When
9
-
10
- class BasicTypes::M17n
11
-
12
- World = [self, [
13
- "locale:[=en:, ja=ja:, alias]",
14
- "names:[World=]",
15
- "[World=en:The_World_Calendar, 世界暦]"
16
- ]]
17
- end
18
-
19
- #
20
- # 世界暦の暦週
21
- #
22
- class CalendarNote::WorldWeek < CalendarNote::Week
23
-
24
- #
25
- # 暦注要素の定義
26
- #
27
- Notes = [When::BasicTypes::M17n, [
28
- "locale:[=en:, ja=ja:, alias]",
29
- "names:[World]",
30
-
31
- # 年の暦注 ----------------------------
32
- [When::BasicTypes::M17n,
33
- "names:[year]"
34
- ],
35
-
36
- # 月の暦注 ----------------------------
37
- [When::BasicTypes::M17n,
38
- "names:[month]",
39
- [When::BasicTypes::M17n,
40
- "names:[Month]"
41
- ]
42
- ],
43
-
44
- # 日の暦注 ----------------------------
45
- [When::BasicTypes::M17n,
46
- "names:[day]",
47
- [When::BasicTypes::M17n,
48
- "names:[Week]",
49
- [DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=>7}],
50
- [DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=>7}],
51
- [DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=>7}],
52
- [DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=>7}],
53
- [DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=>7}],
54
- [DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=>7}],
55
- [DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=>7}],
56
- [DayOfWeek, "label:[Worldsday=en:The_World_Calendar#Features, 週外日=]", {'delta'=>366}],
57
- ],
58
-
59
- "[Common_Week=]"
60
- ]
61
- ]]
62
-
63
- # @private
64
- FirstDayOfWeek = [0, 3, 5] * 4
65
-
66
- # @private
67
- ExtraDayInYear = {
68
- [ 6, 31] => 7,
69
- [12, 31] => 7
70
- }
71
-
72
- # @private
73
- WeekLength = {
74
- [ 5, 31] => 8,
75
- [ 6, 31] => 8,
76
- [11, 31] => 8,
77
- [12, 31] => 8
78
- }
79
-
80
- # 当日または直前の worldsday の日
81
- # @param [When::TM::TemporalPosition] date
82
- # @param [nil] parameter 未使用
83
- # @return [When::TM::TemporalPosition]
84
- #
85
- def worldsday(date, parameter=nil)
86
- event_name = 'worldsday'
87
- date = When.Calendar('World').jul_trans(date, {:events=>event_name})
88
- y,m,d = date.cal_date
89
- h, m = (m-1).divmod(6)
90
- return date if m == 5 && d == 31
91
- dow = [0, 31, 61, 91, 122, 152][m] + d
92
- dow += 182 if h == 1 && When.Calendar('World')._sum([y]) == 365
93
- date += When::TM::PeriodDuration.new([0,0,-dow])
94
- date.events = [event_name]
95
- date
96
- end
97
-
98
- # 当日または直前の week_day の日
99
- # @method week_day(date, parameter=nil)
100
- # @param [When::TM::TemporalPosition] date
101
- # @param [nil] parameter 未使用
102
- # @return [When::TM::TemporalPosition]
103
- # @note week_day は sunday, monday, tuesday, wednesday, thursday, friday, saturday に読み替えてください。
104
-
105
- # @private
106
- 7.times do |k|
107
- name = When.CalendarNote('WorldWeek/Notes::day::Week')[k].to_s.downcase
108
- module_eval %Q{
109
- def #{name}(date, parameter=nil)
110
- event_name = 'from_#{name}'
111
- date = When.Calendar('World').jul_trans(date, {:events=>[event_name], :precision=>When::DAY})
112
- y,m,d = date.cal_date
113
- dow = (m % 6 == 0 && d == 31) ? 7-#{k} : ([4,6,2][m % 3] + d - #{k}) % 7
114
- return date if dow == 0
115
- dow += 1 if d <= dow && (m == 1 || m == 7 && When.Calendar('World')._sum([y]) == 366)
116
- date += When::TM::PeriodDuration.new([0,0,-dow])
117
- date.events = [event_name]
118
- date
119
- end
120
- }
121
- end
122
-
123
- #
124
- # この日は何曜?
125
- #
126
- # @param [When::TM::TemporalPosition] date
127
- # @param [When::TM::CalDate] base
128
- #
129
- # @return [Hash<:value=>When::CalendarNote::Week::DayOfWeek, :position=>Array<Integer>>]
130
- #
131
- def week(date, base=nil)
132
- date = _to_date_for_note(date)
133
- y, m, d = date.cal_date
134
- index = ExtraDayInYear[[m,d]] || (FirstDayOfWeek[m-1] + d - 1) % 7
135
- length = WeekLength[[m, (base||date).length(When::MONTH)]] || 7
136
- {:value=>@days_of_week[index], :position=>[index, length]}
137
- end
138
-
139
- #
140
- # 暦日を当該暦注計算用クラスに変換
141
- #
142
- # @private
143
- def _to_date_for_note(date)
144
- date = When::World ^ date unless date.frame.equal?(When::World)
145
- date
146
- end
147
-
148
- private
149
-
150
- # オブジェクトの正規化
151
- # @private
152
- def _normalize(args=[], options={})
153
- @event ||= 'sunday'
154
- super
155
- end
156
- end
157
-
158
- module CalendarTypes
159
- #
160
- # World calendar based on Gregorian calendar
161
- #
162
- World = [SolarYearTableBased, {
163
- 'label' => 'World::World',
164
- 'rule_table' => {
165
- 365 => {'Length'=>[31,30,30]*3 + [31,30,31]},
166
- 366 => {'Length'=>[31,30,30,31,30,31] *2}
167
- },
168
- 'note' => 'WorldWeek'
169
- }]
170
- end
171
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2015 Takashi SUGA
4
+
5
+ You may use and/or modify this file according to the license described in the LICENSE.txt file included in this archive.
6
+ =end
7
+
8
+ module When
9
+
10
+ class BasicTypes::M17n
11
+
12
+ World = [self, [
13
+ "locale:[=en:, ja=ja:, zh=zh:, alias]",
14
+ "names:[World=en:The_World_Calendar, 世界暦, 世界曆]"
15
+ ]]
16
+ end
17
+
18
+ #
19
+ # 世界暦の暦週
20
+ #
21
+ class CalendarNote::WorldWeek < CalendarNote::Week
22
+
23
+ #
24
+ # 暦注要素の定義
25
+ #
26
+ Notes = [When::BasicTypes::M17n, [
27
+ "locale:[=en:, ja=ja:, alias]",
28
+ "names:[World, 世界暦]",
29
+
30
+ # 年の暦注 ----------------------------
31
+ [When::BasicTypes::M17n,
32
+ "names:[note for year=, 年の暦注=, *year]"
33
+ ],
34
+
35
+ # 月の暦注 ----------------------------
36
+ [When::BasicTypes::M17n,
37
+ "names:[note for month=, 月の暦注=, *month]",
38
+ [When::BasicTypes::M17n,
39
+ "names:[month name=en:Month, 月の名前=ja:%%<月_(暦)>, zh:該月的名稱=, *alias:Month=]"
40
+ ]
41
+ ],
42
+
43
+ # 日の暦注 ----------------------------
44
+ [When::BasicTypes::M17n,
45
+ "names:[note for day=, 日の暦注=, *day]",
46
+ [When::BasicTypes::M17n,
47
+ "names:[Week, 週, zh:星期]",
48
+ [DayOfWeek, "label:[Sunday, 日曜日, /date/day_names/0]", {'delta'=>7}],
49
+ [DayOfWeek, "label:[Monday, 月曜日, /date/day_names/1]", {'delta'=>7}],
50
+ [DayOfWeek, "label:[Tuesday, 火曜日, /date/day_names/2]", {'delta'=>7}],
51
+ [DayOfWeek, "label:[Wednesday, 水曜日, /date/day_names/3]", {'delta'=>7}],
52
+ [DayOfWeek, "label:[Thursday, 木曜日, /date/day_names/4]", {'delta'=>7}],
53
+ [DayOfWeek, "label:[Friday, 金曜日, /date/day_names/5]", {'delta'=>7}],
54
+ [DayOfWeek, "label:[Saturday, 土曜日, /date/day_names/6]", {'delta'=>7}],
55
+ [DayOfWeek, "label:[Worldsday=en:The_World_Calendar#Features, 週外日=]", {'delta'=>366}],
56
+ ],
57
+
58
+ "[Common_Week=]"
59
+ ]
60
+ ]]
61
+
62
+ # @private
63
+ FirstDayOfWeek = [0, 3, 5] * 4
64
+
65
+ # @private
66
+ ExtraDayInYear = {
67
+ [ 6, 31] => 7,
68
+ [12, 31] => 7
69
+ }
70
+
71
+ # @private
72
+ WeekLength = {
73
+ [ 5, 31] => 8,
74
+ [ 6, 31] => 8,
75
+ [11, 31] => 8,
76
+ [12, 31] => 8
77
+ }
78
+
79
+ # 当日または直前の worldsday の日
80
+ # @param [When::TM::TemporalPosition] date
81
+ # @param [nil] parameter 未使用
82
+ # @return [When::TM::TemporalPosition]
83
+ #
84
+ def worldsday(date, parameter=nil)
85
+ event_name = 'worldsday'
86
+ date = When.Calendar('World').jul_trans(date, {:events=>event_name})
87
+ y,m,d = date.cal_date
88
+ h, m = (m-1).divmod(6)
89
+ return date if m == 5 && d == 31
90
+ dow = [0, 31, 61, 91, 122, 152][m] + d
91
+ dow += 182 if h == 1 && When.Calendar('World')._sum([y]) == 365
92
+ date += When::TM::PeriodDuration.new([0,0,-dow])
93
+ date.events = [event_name]
94
+ date
95
+ end
96
+
97
+ # 当日または直前の week_day の日
98
+ # @method week_day(date, parameter=nil)
99
+ # @param [When::TM::TemporalPosition] date
100
+ # @param [nil] parameter 未使用
101
+ # @return [When::TM::TemporalPosition]
102
+ # @note week_day は sunday, monday, tuesday, wednesday, thursday, friday, saturday に読み替えてください。
103
+
104
+ # @private
105
+ 7.times do |k|
106
+ name = When.CalendarNote('WorldWeek/Notes::day::Week')[k].to_s.downcase
107
+ module_eval %Q{
108
+ def #{name}(date, parameter=nil)
109
+ event_name = 'from_#{name}'
110
+ date = When.Calendar('World').jul_trans(date, {:events=>[event_name], :precision=>When::DAY})
111
+ y,m,d = date.cal_date
112
+ dow = (m % 6 == 0 && d == 31) ? 7-#{k} : ([4,6,2][m % 3] + d - #{k}) % 7
113
+ return date if dow == 0
114
+ dow += 1 if d <= dow && (m == 1 || m == 7 && When.Calendar('World')._sum([y]) == 366)
115
+ date += When::TM::PeriodDuration.new([0,0,-dow])
116
+ date.events = [event_name]
117
+ date
118
+ end
119
+ }
120
+ end
121
+
122
+ #
123
+ # この日は何曜?
124
+ #
125
+ # @param [When::TM::TemporalPosition] date
126
+ # @param [When::TM::CalDate] base
127
+ #
128
+ # @return [Hash<:value=>When::CalendarNote::Week::DayOfWeek, :position=>Array<Integer>>]
129
+ #
130
+ def week(date, base=nil)
131
+ date = _to_date_for_note(date)
132
+ y, m, d = date.cal_date
133
+ index = ExtraDayInYear[[m,d]] || (FirstDayOfWeek[m-1] + d - 1) % 7
134
+ length = WeekLength[[m, (base||date).length(When::MONTH)]] || 7
135
+ {:value=>@days_of_week[index], :position=>[index, length]}
136
+ end
137
+
138
+ #
139
+ # 暦日を当該暦注計算用クラスに変換
140
+ #
141
+ # @private
142
+ def _to_date_for_note(date)
143
+ date = When::World ^ date unless date.frame.equal?(When::World)
144
+ date
145
+ end
146
+
147
+ private
148
+
149
+ # オブジェクトの正規化
150
+ # @private
151
+ def _normalize(args=[], options={})
152
+ @event ||= 'sunday'
153
+ super
154
+ end
155
+ end
156
+
157
+ module CalendarTypes
158
+ #
159
+ # World calendar based on Gregorian calendar
160
+ #
161
+ World = [SolarYearTableBased, {
162
+ 'label' => 'World',
163
+ 'rule_table' => {
164
+ 365 => {'Length'=>[31,30,30]*3 + [31,30,31]},
165
+ 366 => {'Length'=>[31,30,30,31,30,31] *2}
166
+ },
167
+ 'note' => 'WorldWeek'
168
+ }]
169
+ end
170
+ end