when_exe 0.2.100 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. data/LICENSE.ja.txt +25 -25
  2. data/LICENSE.txt +31 -31
  3. data/bin/irb.rc +5 -0
  4. data/bin/locales.rb +2 -2
  5. data/bin/when.rb +16 -0
  6. data/bin/when.rb.config +7 -0
  7. data/lib/when_exe.rb +616 -14
  8. data/lib/when_exe/basictypes.rb +615 -0
  9. data/lib/when_exe/calendartypes.rb +1700 -0
  10. data/lib/when_exe/coordinates.rb +1936 -0
  11. data/lib/when_exe/core/compatibility.rb +54 -0
  12. data/lib/when_exe/core/duration.rb +72 -72
  13. data/lib/when_exe/core/extension.rb +382 -0
  14. data/lib/when_exe/ephemeris.rb +1845 -0
  15. data/lib/when_exe/googlecalendar.rb +140 -0
  16. data/lib/when_exe/icalendar.rb +1587 -0
  17. data/lib/when_exe/inspect.rb +1237 -0
  18. data/lib/when_exe/locales/af.rb +90 -0
  19. data/lib/when_exe/locales/ar.rb +145 -0
  20. data/lib/when_exe/locales/az.rb +90 -0
  21. data/lib/when_exe/locales/bg.rb +90 -0
  22. data/lib/when_exe/locales/bn.rb +94 -0
  23. data/lib/when_exe/locales/bs.rb +121 -0
  24. data/lib/when_exe/locales/ca.rb +92 -0
  25. data/lib/when_exe/locales/cs.rb +107 -0
  26. data/lib/when_exe/locales/cy.rb +150 -0
  27. data/lib/when_exe/locales/da.rb +84 -0
  28. data/lib/when_exe/locales/de.rb +92 -0
  29. data/lib/when_exe/locales/de_AT.rb +92 -0
  30. data/lib/when_exe/locales/de_CH.rb +92 -0
  31. data/lib/when_exe/locales/el.rb +93 -0
  32. data/lib/when_exe/locales/en.rb +88 -0
  33. data/lib/when_exe/locales/en_AU.rb +88 -0
  34. data/lib/when_exe/locales/en_CA.rb +88 -0
  35. data/lib/when_exe/locales/en_GB.rb +88 -0
  36. data/lib/when_exe/locales/en_IN.rb +88 -0
  37. data/lib/when_exe/locales/en_NZ.rb +88 -0
  38. data/lib/when_exe/locales/eo.rb +89 -0
  39. data/lib/when_exe/locales/es.rb +84 -0
  40. data/lib/when_exe/locales/es_419.rb +84 -0
  41. data/lib/when_exe/locales/es_AR.rb +84 -0
  42. data/lib/when_exe/locales/es_CL.rb +84 -0
  43. data/lib/when_exe/locales/es_CO.rb +84 -0
  44. data/lib/when_exe/locales/es_MX.rb +84 -0
  45. data/lib/when_exe/locales/es_PE.rb +85 -0
  46. data/lib/when_exe/locales/es_VE.rb +84 -0
  47. data/lib/when_exe/locales/et.rb +94 -0
  48. data/lib/when_exe/locales/eu.rb +95 -0
  49. data/lib/when_exe/locales/fa.rb +80 -0
  50. data/lib/when_exe/locales/fi.rb +89 -0
  51. data/lib/when_exe/locales/fr.rb +88 -0
  52. data/lib/when_exe/locales/fr_CA.rb +88 -0
  53. data/lib/when_exe/locales/fr_CH.rb +88 -0
  54. data/lib/when_exe/locales/gl.rb +81 -0
  55. data/lib/when_exe/locales/he.rb +84 -0
  56. data/lib/when_exe/locales/hi.rb +80 -0
  57. data/lib/when_exe/locales/hi_IN.rb +84 -0
  58. data/lib/when_exe/locales/hr.rb +128 -0
  59. data/lib/when_exe/locales/hu.rb +84 -0
  60. data/lib/when_exe/locales/id.rb +89 -0
  61. data/lib/when_exe/locales/is.rb +89 -0
  62. data/lib/when_exe/locales/it.rb +87 -0
  63. data/lib/when_exe/locales/it_CH.rb +87 -0
  64. data/lib/when_exe/locales/ja.rb +78 -0
  65. data/lib/when_exe/locales/kn.rb +86 -0
  66. data/lib/when_exe/locales/ko.rb +78 -0
  67. data/lib/when_exe/locales/links.rb +2342 -0
  68. data/lib/when_exe/locales/lo.rb +123 -0
  69. data/lib/when_exe/locales/locales.rb +91 -0
  70. data/lib/when_exe/locales/lt.rb +111 -0
  71. data/lib/when_exe/locales/lv.rb +118 -0
  72. data/lib/when_exe/locales/mk.rb +93 -0
  73. data/lib/when_exe/locales/mn.rb +80 -0
  74. data/lib/when_exe/locales/nb.rb +81 -0
  75. data/lib/when_exe/locales/ne.rb +81 -0
  76. data/lib/when_exe/locales/nl.rb +92 -0
  77. data/lib/when_exe/locales/nn.rb +73 -0
  78. data/lib/when_exe/locales/or.rb +84 -0
  79. data/lib/when_exe/locales/pl.rb +128 -0
  80. data/lib/when_exe/locales/pt.rb +88 -0
  81. data/lib/when_exe/locales/pt_BR.rb +88 -0
  82. data/lib/when_exe/locales/rm.rb +143 -0
  83. data/lib/when_exe/locales/ro.rb +105 -0
  84. data/lib/when_exe/locales/ru.rb +128 -0
  85. data/lib/when_exe/locales/sk.rb +109 -0
  86. data/lib/when_exe/locales/sl.rb +122 -0
  87. data/lib/when_exe/locales/sr.rb +122 -0
  88. data/lib/when_exe/locales/sv.rb +83 -0
  89. data/lib/when_exe/locales/sw.rb +89 -0
  90. data/lib/when_exe/locales/th.rb +78 -0
  91. data/lib/when_exe/locales/tl.rb +99 -0
  92. data/lib/when_exe/locales/tr.rb +96 -0
  93. data/lib/when_exe/locales/uk.rb +128 -0
  94. data/lib/when_exe/locales/uz.rb +128 -0
  95. data/lib/when_exe/locales/vi.rb +94 -0
  96. data/lib/when_exe/locales/wo.rb +82 -0
  97. data/lib/when_exe/locales/zh_CN.rb +77 -0
  98. data/lib/when_exe/locales/zh_HK.rb +77 -0
  99. data/lib/when_exe/locales/zh_TW.rb +77 -0
  100. data/lib/when_exe/mini_application.rb +252 -0
  101. data/lib/when_exe/parts/enumerator.rb +472 -0
  102. data/lib/when_exe/parts/geometric_complex.rb +379 -0
  103. data/lib/when_exe/parts/locale.rb +513 -0
  104. data/lib/when_exe/parts/method_cash.rb +207 -0
  105. data/lib/when_exe/parts/resource.rb +806 -0
  106. data/lib/when_exe/parts/timezone.rb +182 -0
  107. data/lib/when_exe/region/bahai.rb +145 -0
  108. data/lib/when_exe/region/balinese.rb +627 -0
  109. data/lib/when_exe/region/chinese.rb +896 -0
  110. data/lib/when_exe/region/chinese_calendar.rb +919 -0
  111. data/lib/when_exe/region/chinese_epoch.rb +1245 -0
  112. data/lib/when_exe/region/christian.rb +644 -0
  113. data/lib/when_exe/region/far_east.rb +192 -0
  114. data/lib/when_exe/region/french.rb +66 -0
  115. data/lib/when_exe/region/geologicalage.rb +639 -0
  116. data/lib/when_exe/region/indian.rb +1066 -0
  117. data/lib/when_exe/region/iranian.rb +66 -0
  118. data/lib/when_exe/region/islamic.rb +105 -0
  119. data/lib/when_exe/region/japanese.rb +851 -0
  120. data/lib/when_exe/region/japanese_notes.rb +964 -0
  121. data/lib/when_exe/region/japanese_residues.rb +1149 -0
  122. data/lib/when_exe/region/javanese.rb +228 -0
  123. data/lib/when_exe/region/jewish.rb +127 -0
  124. data/lib/when_exe/region/korean.rb +267 -0
  125. data/lib/when_exe/region/m17n.rb +115 -0
  126. data/lib/when_exe/region/martian.rb +215 -0
  127. data/lib/when_exe/region/mayan.rb +122 -0
  128. data/lib/when_exe/region/moon.rb +333 -0
  129. data/lib/when_exe/region/nihon_shoki.rb +73 -0
  130. data/lib/when_exe/region/planets.rb +585 -0
  131. data/lib/when_exe/region/pope.rb +298 -0
  132. data/lib/when_exe/region/residue.rb +229 -0
  133. data/lib/when_exe/region/roman.rb +325 -0
  134. data/lib/when_exe/region/ryukyu.rb +98 -0
  135. data/lib/when_exe/region/shire.rb +254 -0
  136. data/lib/when_exe/region/sun.rb +210 -0
  137. data/lib/when_exe/region/thai.rb +227 -0
  138. data/lib/when_exe/region/tibetan.rb +233 -0
  139. data/lib/when_exe/region/v50.rb +111 -0
  140. data/lib/when_exe/region/vietnamese.rb +173 -0
  141. data/lib/when_exe/region/world.rb +197 -0
  142. data/lib/when_exe/timestandard.rb +547 -0
  143. data/lib/when_exe/tmduration.rb +330 -330
  144. data/lib/when_exe/tmobjects.rb +1295 -0
  145. data/lib/when_exe/tmposition.rb +1955 -0
  146. data/lib/when_exe/tmreference.rb +1547 -0
  147. data/lib/when_exe/version.rb +10 -3
  148. data/link_to_online_documents +4 -0
  149. data/test/examples/JapanHolidays.ics +456 -0
  150. data/test/examples/Millennium.ics +17 -0
  151. data/test/examples/NewYork.ics +61 -0
  152. data/test/examples/Residue.m17n +135 -0
  153. data/test/examples/Spatial.m17n +179 -0
  154. data/test/examples/Terms.m17n +39 -0
  155. data/test/examples/Test.ics +53 -0
  156. data/test/examples/USA-DST.ics +61 -0
  157. data/test/examples/geometric_complex.rb +41 -0
  158. data/test/examples/sample.xml +14 -0
  159. data/test/examples/today.rb +61 -0
  160. data/test/test.rb +54 -19
  161. data/test/test.rb.config +1 -0
  162. data/test/test/basictypes.rb +368 -0
  163. data/test/test/calendartypes.rb +57 -0
  164. data/test/test/coordinates.rb +380 -0
  165. data/test/test/ephemeris.rb +127 -0
  166. data/test/test/googlecalendar.rb +167 -0
  167. data/test/test/icalendar.rb +848 -0
  168. data/test/test/inspect.rb +115 -0
  169. data/test/test/parts.rb +480 -0
  170. data/test/test/region/chinese.rb +161 -0
  171. data/test/test/region/french.rb +33 -0
  172. data/test/test/region/geologicalage.rb +14 -0
  173. data/test/test/region/indian.rb +55 -0
  174. data/test/test/region/iran.rb +54 -0
  175. data/test/test/region/islamic.rb +18 -0
  176. data/test/test/region/japanese.rb +62 -0
  177. data/test/test/region/jewish.rb +61 -0
  178. data/test/test/region/m17n.rb +181 -0
  179. data/test/test/region/mayan.rb +78 -0
  180. data/test/test/region/moon.rb +14 -0
  181. data/test/test/region/planets.rb +14 -0
  182. data/test/test/region/residue.rb +123 -0
  183. data/test/test/region/sun.rb +14 -0
  184. data/test/test/region/thai.rb +94 -0
  185. data/test/test/region/tibetan.rb +30 -0
  186. data/test/test/tmobjects.rb +356 -57
  187. data/test/test/tmposition.rb +237 -0
  188. data/test/test/tmreference.rb +95 -0
  189. data/when_exe.gemspec +2 -2
  190. metadata +187 -7
  191. data/doc/COPYING +0 -31
  192. data/doc/COPYING.ja +0 -25
  193. data/doc/document_url +0 -1
@@ -0,0 +1,54 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2013 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
+ #
9
+ # Ruby .8.x 系のためのための互換性確保用コード
10
+ #
11
+
12
+ class String
13
+ unless "1".respond_to?(:encode)
14
+ require('iconv')
15
+ # encode
16
+ #
17
+ # @param [String] code 文字コード
18
+ #
19
+ # @return [String] 文字コードcode に変換した文字列
20
+ #
21
+ def encode(code)
22
+ return Iconv.iconv(code, 'UTF-8', self)[0]
23
+ end
24
+ end
25
+
26
+ unless "1".respond_to?(:to_r)
27
+ # to_r(もどき)
28
+ #
29
+ # 文字列を numeric に変換する
30
+ # (できるだけ情報が落ちない型を選択)
31
+ #
32
+ # @return [Numeric]
33
+ def to_r
34
+ case self
35
+ when /\.|E/i
36
+ to_f
37
+ when /\//
38
+ Rational
39
+ Rational(*split(/\//).map {|v| v.to_i})
40
+ else
41
+ to_i
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ #
48
+ # 例外クラス
49
+ #
50
+ unless Object.const_defined?(:StopIteration)
51
+ # @private
52
+ class StopIteration < IndexError
53
+ end
54
+ end
@@ -1,72 +1,72 @@
1
- # -*- coding: utf-8 -*-
2
- =begin
3
- Copyright (C) 2013 Takashi SUGA
4
-
5
- You may use and/or modify this file according to the license described in the COPYING file included in this archive.
6
- =end
7
-
8
- #
9
- # When::TM::Duration のための標準クラスの拡張
10
- #
11
-
12
- #
13
- # Extensions to Time class
14
- #
15
- # @private
16
- class Time
17
-
18
- alias :_plus_ :+
19
- def +(other)
20
- other.kind_of?(When::TM::Duration) ? self + other.to_f : self._plus_(other)
21
- end
22
-
23
-
24
- alias :_minus_ :-
25
- def -(other)
26
- other.kind_of?(When::TM::Duration) ? self - other.to_f : self._minus_(other)
27
- end
28
- end
29
-
30
- #
31
- # Extensions to Numeric class
32
- #
33
- class Numeric
34
-
35
- #
36
- # メソッド名に相当する単位で表した When::TM::Duration
37
- # @method unit_duration
38
- # @return [When::TM::Duration]
39
- # @note unit は second, minute, hour, day, week または
40
- # seconds, minutes, hours, days, weeks に読み替える
41
- # @note core/duration
42
-
43
- # @private
44
- When::TM::Duration::Unit.keys.each do |key|
45
-
46
- module_eval %Q{
47
- # for When::TM::Duration
48
- def #{key}_duration
49
- When::TM::Duration.new(self * When::TM::Duration::Unit['#{key}'])
50
- end
51
- alias :#{key}s_duration :#{key}_duration
52
- }
53
- end
54
- end
55
-
56
- #
57
- # Extensions to Array class
58
- #
59
- class Array
60
-
61
- #
62
- # self を Array<日, 時, 分, 秒> とみなして When::TM::Duration を生成
63
- #
64
- # @return [When::TM::Duration]
65
- #
66
- # @note core/duration
67
- #
68
- def duration
69
- When::TM::Duration.dhms(*self)
70
- end
71
- alias :to_duration :duration
72
- end
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2013 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
+ #
9
+ # When::TM::Duration のための標準クラスの拡張
10
+ #
11
+
12
+ #
13
+ # Extensions to Time class
14
+ #
15
+ # @private
16
+ class Time
17
+
18
+ alias :_plus_ :+
19
+ def +(other)
20
+ other.kind_of?(When::TM::Duration) ? self + other.to_f : self._plus_(other)
21
+ end
22
+
23
+
24
+ alias :_minus_ :-
25
+ def -(other)
26
+ other.kind_of?(When::TM::Duration) ? self - other.to_f : self._minus_(other)
27
+ end
28
+ end
29
+
30
+ #
31
+ # Extensions to Numeric class
32
+ #
33
+ class Numeric
34
+
35
+ #
36
+ # メソッド名に相当する単位で表した When::TM::Duration
37
+ # @method unit_duration
38
+ # @return [When::TM::Duration]
39
+ # @note unit は second, minute, hour, day, week または
40
+ # seconds, minutes, hours, days, weeks に読み替える
41
+ # @note core/duration
42
+
43
+ # @private
44
+ When::TM::Duration::Unit.keys.each do |key|
45
+
46
+ module_eval %Q{
47
+ # for When::TM::Duration
48
+ def #{key}_duration
49
+ When::TM::Duration.new(self * When::TM::Duration::Unit['#{key}'])
50
+ end
51
+ alias :#{key}s_duration :#{key}_duration
52
+ }
53
+ end
54
+ end
55
+
56
+ #
57
+ # Extensions to Array class
58
+ #
59
+ class Array
60
+
61
+ #
62
+ # self を Array<日, 時, 分, 秒> とみなして When::TM::Duration を生成
63
+ #
64
+ # @return [When::TM::Duration]
65
+ #
66
+ # @note core/duration
67
+ #
68
+ def duration
69
+ When::TM::Duration.dhms(*self)
70
+ end
71
+ alias :to_duration :duration
72
+ end
@@ -0,0 +1,382 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2013 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
+ require 'when_exe/core/duration'
9
+
10
+ #
11
+ # 標準クラスの拡張
12
+ #
13
+
14
+ #
15
+ # Extensions to Time class
16
+ #
17
+ class Time
18
+ #
19
+ # 対応する When::TM::JulianDate を生成
20
+ #
21
+ # @param [Hash] options
22
+ # @option options [When::TM::Clock] :clock
23
+ # @option options [When::Parts::Timezone] :tz
24
+ #
25
+ # @return [When::TM::JulianDate]
26
+ #
27
+ # @note core/extension
28
+ #
29
+ def julian_date(options={})
30
+ When::TM::JulianDate.universal_time(self.to_f * When::TM::IntervalLength::SECOND, options)
31
+ end
32
+ alias :to_julian_date :julian_date
33
+
34
+ #
35
+ # 対応する When::TM::DateAndTime を生成
36
+ #
37
+ # @param [Hash] options 暦法や時法などの指定
38
+ #
39
+ # @see When::TM::TemporalPosition._instance
40
+ #
41
+ # @return [When::TM::DateAndTime]
42
+ #
43
+ # @note core/extension
44
+ #
45
+ def tm_position(options={})
46
+ When.at(self, options)
47
+ end
48
+ alias :to_tm_position :tm_position
49
+ end
50
+
51
+ #
52
+ # Extensions to Date class
53
+ #
54
+ class Date
55
+
56
+ include When::TM::TemporalPosition::Conversion if When::TM.const_defined?(:TemporalPosition)
57
+
58
+ end
59
+
60
+ #
61
+ # Extensions to Numeric class
62
+ #
63
+ class Numeric
64
+
65
+ include When::TM::TemporalPosition::Conversion if When::TM.const_defined?(:TemporalPosition)
66
+
67
+ #
68
+ # 曜日(剰余類)
69
+ #
70
+ # @return [When::Coordinates::Residue] 月曜を 0 とする七曜(剰余類)
71
+ #
72
+ # @note core/extension
73
+ #
74
+ def to_day_of_week
75
+ When::Coordinates::Residue.day_of_week(self)
76
+ end
77
+ alias :day_of_week :to_day_of_week
78
+
79
+ #
80
+ # 月名
81
+ #
82
+ # self が 月番号の月名を返します
83
+ #
84
+ # @return [When::BasicTypes::M17n] 月名
85
+ #
86
+ # @note core/extension
87
+ #
88
+ def to_month_name
89
+ When::BasicTypes::M17n.month_name(self)
90
+ end
91
+ alias :month_name :to_month_name
92
+
93
+ # メソッド名に相当する単位で表した When::TM::IntervalLength
94
+ # @method unit_interval_length
95
+ # @return [When::TM::IntervalLength]
96
+ #
97
+ # @note unit は second, minute, hour, day, week または
98
+ # seconds, minutes, hours, days, weeks に読み替える
99
+ #
100
+ # @note core/extension
101
+
102
+ # メソッド名に相当する単位で表した When::TM::PeriodDuration
103
+ # @method unit_period_duration
104
+ # @return [When::TM::PeriodDuration]
105
+ #
106
+ # @note unit は second, minute, hour, day, week, month, year または
107
+ # seconds, minutes, hours, days, weeks, months, years に読み替える
108
+ #
109
+ # @note core/extension
110
+
111
+ # @private
112
+ When::TM::Duration::Unit.keys.each do |key|
113
+
114
+ module_eval %Q{
115
+ # for When::TM::IntervalLength
116
+ def #{key}_interval_length
117
+ When::TM::IntervalLength.new(self, '#{key}')
118
+ end
119
+ alias :#{key}s_interval_length :#{key}_interval_length
120
+
121
+ # for When::TM::PeriodDuration
122
+ def #{key}_period_duration
123
+ When::TM::PeriodDuration.new(self, When::#{key.upcase})
124
+ end
125
+ alias :#{key}s_period_duration :#{key}_period_duration
126
+ }
127
+ end
128
+ end
129
+
130
+ #
131
+ # Extensions to String class
132
+ #
133
+ class String
134
+
135
+ #
136
+ # self を When::BasicTypes::M17n に変換する
137
+ #
138
+ # @return [When::BasicTypes::M17n]
139
+ #
140
+ # @note core/extension
141
+ #
142
+ def to_m17n
143
+ When::BasicTypes::M17n.new(self)
144
+ end
145
+
146
+ # 特定 locale に対応した文字列の取得
147
+ #
148
+ # @param [String] loc locale の指定
149
+ #
150
+ # @return [String] loc に対応した文字列
151
+ #
152
+ # @note core/extension
153
+ #
154
+ def translate(loc='')
155
+ return encode($1) if loc =~ /\.(.+)$/
156
+ return self
157
+ end
158
+ alias :/ :translate
159
+
160
+ # 包摂リストに登録されている文字を包摂する
161
+ #
162
+ # @param [Hash] pattern 包摂ルール
163
+ #
164
+ # @return [String] 包摂結果
165
+ #
166
+ def ideographic_unification(pattern=When::Parts::Locale::DefaultUnification)
167
+ When::Parts::Locale.ideographic_unification(self, pattern)
168
+ end
169
+
170
+ #
171
+ # self を IRI とみなして When::Parts::Resource を取得
172
+ #
173
+ # @param [String] namespace デフォルトの namespace
174
+ #
175
+ # @return [When::Parts::Resource]
176
+ #
177
+ # @note core/extension
178
+ #
179
+ def resource(namespace=nil)
180
+ When::Parts::Resource._instance(self, namespace)
181
+ end
182
+ alias :to_resource :resource
183
+
184
+ #
185
+ # self をプレフィクス '_c:' を省略した IRI とみなして When::TM::Calendar を取得
186
+ #
187
+ # @return [When::TM::Calendar]
188
+ #
189
+ # @note core/extension
190
+ #
191
+ def calendar
192
+ When::Parts::Resource._instance(self, '_c:')
193
+ end
194
+ alias :to_calendar :calendar
195
+
196
+ #
197
+ # self をプレフィクス '_c:' を省略した IRI とみなして When::TM::CalendarNote を取得
198
+ #
199
+ # @return [When::TM::CalendarNote]
200
+ #
201
+ # @note core/extension
202
+ #
203
+ def calendar_note
204
+ When::Parts::Resource._instance(self, '_n:')
205
+ end
206
+ alias :to_calendar_note :calendar_note
207
+
208
+ #
209
+ # self をプレフィクス '_e:' を省略した IRI とみなして When::TM::CalendarEra を取得
210
+ #
211
+ # @return [When::TM::CalendarEra]
212
+ #
213
+ # @note core/extension
214
+ #
215
+ def calendar_era
216
+ When::Parts::Resource._instance(self, '_e:')
217
+ end
218
+ alias :to_calendar_era :calendar_era
219
+
220
+ #
221
+ # self をプレフィクス '_m:' を省略した IRI とみなして When::BasicTypes::M17n を取得
222
+ #
223
+ # @return [When::BasicTypes::M17n]
224
+ #
225
+ # @note core/extension
226
+ #
227
+ def m17n
228
+ When::Parts::Resource._instance(self, '_m:')
229
+ end
230
+
231
+ # self を幹と枝の要素と解釈してWhen::Coordinates::Pair を生成
232
+ #
233
+ # @see When::Coordinates::Pair._force_pair
234
+ #
235
+ # @return [When::Coordinates::Pair]
236
+ #
237
+ def pair
238
+ Coordinates::Pair._force_pair(self)
239
+ end
240
+
241
+ #
242
+ # self を検索する暦年代とみなして登録された When::TM::CalendarEraを検索
243
+ #
244
+ # @overload calendar_era(options={}
245
+ # @param [Hash] options
246
+ # see alse {When.era}
247
+ #
248
+ # @return [Array<When::TM::CalendarEra>]
249
+ #
250
+ # 検索結果を When::TM::CalendarEra オブジェクトの Array で返す。
251
+ # ヒット数が不足している場合は、_setup_ で指定した順序で When::TM::CalendarEra オブジェクトを
252
+ # 生成しつつ読み込んで検索する。
253
+ #
254
+ # @note core/extension
255
+ #
256
+ def era(*args)
257
+ When::TM::CalendarEra._instance(*([self] + args))
258
+ end
259
+ alias :to_era :era
260
+
261
+ #
262
+ # self をWhen.exe Standard Expression とみなして When::TM::TemporalPosition を生成
263
+ #
264
+ # @param [Hash] options 暦法や時法などの指定
265
+ #
266
+ # @see When::TM::TemporalPosition._instance
267
+ #
268
+ # @return [When::TM::TemporalPosition]
269
+ #
270
+ # @note core/extension
271
+ #
272
+ def when?(options={})
273
+ When.when?(self, options)
274
+ end
275
+ alias :tm_position :when?
276
+ alias :to_tm_position :when?
277
+
278
+ #
279
+ # 曜日(剰余類)
280
+ #
281
+ # self の最初の3文字から決定した七曜(剰余類)を返します。
282
+ # 一致する七曜(剰余類)がない場合、名前の一致するその他の剰余類を探して返します。
283
+ #
284
+ # @return [When::Coordinates::Residue]
285
+ # [ 月曜を 0 とする七曜(剰余類) ]
286
+ # [ 名前の一致するその他の剰余類 ]
287
+ #
288
+ # @note core/extension
289
+ #
290
+ def to_residue
291
+ When::Coordinates::Residue.to_residue(self)
292
+ end
293
+ alias :residue :to_residue
294
+
295
+ #
296
+ # 月名
297
+ #
298
+ # self の最初の3文字から決定した月名を返します。
299
+ # 一致する月名がない場合、名前の一致するその他のM17nを探して返します。
300
+ # (self が M17n なら name 自身をそのまま返します)
301
+ #
302
+ # @return [When::BasicTypes::M17n] 月名
303
+ #
304
+ # @note core/extension
305
+ #
306
+ def to_month_name
307
+ When::BasicTypes::M17n.month_name(self)
308
+ end
309
+ alias :month_name :to_month_name
310
+
311
+ #
312
+ # self をWhen.exe Standard Expression とみなして When::TM::TemporalPosition を生成し“^”演算を実行
313
+ #
314
+ # @return [When::TM::TemporalPosition の “^”演算結果]
315
+ #
316
+ # @note core/extension
317
+ #
318
+ def ^(other)
319
+ When::TM::TemporalPosition._instance(self, {}) ^ other
320
+ end
321
+ end
322
+
323
+ #
324
+ # Extensions to Regexp class
325
+ #
326
+ class Regexp
327
+ #
328
+ # self を検索する暦年代にマッチする正規表現とみなして登録された When::TM::CalendarEraを検索
329
+ #
330
+ # @overload calendar_era(options={}
331
+ # @param [Hash] options
332
+ # see also {When.era}
333
+ #
334
+ # @return [Array<When::TM::CalendarEra>]
335
+ #
336
+ # 検索結果を When::TM::CalendarEra オブジェクトの Array で返す。
337
+ # ヒット数が不足している場合は、_setup_ で指定した順序で When::TM::CalendarEra オブジェクトを
338
+ # 生成しつつ読み込んで検索する。
339
+ #
340
+ # @note core/extension
341
+ #
342
+ def era(*args)
343
+ When::TM::CalendarEra._instance(*([self] + args))
344
+ end
345
+ alias :to_era :era
346
+
347
+ # 包摂リストに登録されている文字を包摂する
348
+ #
349
+ # @param [Hash] pattern 包摂ルール
350
+ #
351
+ # @return [Regexp] 包摂結果
352
+ #
353
+ def ideographic_unification(pattern=When::Parts::Locale::DefaultUnification)
354
+ When::Parts::Locale.ideographic_unification(self, pattern)
355
+ end
356
+ end
357
+
358
+ #
359
+ # Extensions to Array class
360
+ #
361
+ class Array
362
+ #
363
+ # self を暦要素の Array とみなして [When::TM::TemporalPosition] を生成
364
+ #
365
+ # @param [Hash] options 暦法や時法などの指定
366
+ # @option options [Symbol] :invalid
367
+ # [:raise 日時が存在しない場合例外発生 ]
368
+ # [:check 日時が存在しない場合 nil を返す ]
369
+ # [その他/nil 日時が存在することを確認しない(デフォルト)]
370
+ # see also {When::TM::TemporalPosition._instance}
371
+ #
372
+ # @return [When::TM::TemporalPosition]
373
+ # @raise [ArgumentError]
374
+ # options[ :invalid ] が :raise で、日時が存在しない場合
375
+ #
376
+ # @note core/extension
377
+ #
378
+ def tm_position(options={})
379
+ When.TemporalPosition(*(self.dup << options))
380
+ end
381
+ alias :to_tm_position :tm_position
382
+ end