when_exe 0.2.100 → 0.3.1

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 (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