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,61 @@
1
+ BEGIN:VCALENDAR
2
+ # Copyright (C) 2011 Takashi SUGA
3
+ #
4
+ # You may use and/or modify this file according to the license
5
+ # described in the LICENSE.txt file included in this archive.
6
+ VERSION:2.0
7
+ PRODID:-//hacksw/handcal//NONSGML v1.0//EN
8
+ BEGIN:VTIMEZONE
9
+ TZID:America/#{C}
10
+ LAST-MODIFIED:20050809T050000Z
11
+ BEGIN:DAYLIGHT
12
+ DTSTART:19670430T020000
13
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19730429T#{SZ}0000Z
14
+ TZOFFSETFROM:-#{S}00
15
+ TZOFFSETTO:-#{D}00
16
+ TZNAME:#{Z}DT
17
+ END:DAYLIGHT
18
+ BEGIN:STANDARD
19
+ DTSTART:19671029T020000
20
+ RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU;UNTIL=20061029T#{DZ}0000Z
21
+ TZOFFSETFROM:-#{D}00
22
+ TZOFFSETTO:-#{S}00
23
+ TZNAME:#{Z}ST
24
+ END:STANDARD
25
+ BEGIN:DAYLIGHT
26
+ DTSTART:19740106T020000
27
+ RDATE:19750223T020000
28
+ TZOFFSETFROM:-#{S}00
29
+ TZOFFSETTO:-#{D}00
30
+ TZNAME:#{Z}DT
31
+ END:DAYLIGHT
32
+ BEGIN:DAYLIGHT
33
+ DTSTART:19760425T020000
34
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU;UNTIL=19860427T#{SZ}0000Z
35
+ TZOFFSETFROM:-#{S}00
36
+ TZOFFSETTO:-#{D}00
37
+ TZNAME:#{Z}DT
38
+ END:DAYLIGHT
39
+ BEGIN:DAYLIGHT
40
+ DTSTART:19870405T020000
41
+ RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU;UNTIL=20060402T#{SZ}0000Z
42
+ TZOFFSETFROM:-#{S}00
43
+ TZOFFSETTO:-#{D}00
44
+ TZNAME:#{Z}DT
45
+ END:DAYLIGHT
46
+ BEGIN:DAYLIGHT
47
+ DTSTART:20070311T020000
48
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
49
+ TZOFFSETFROM:-#{S}00
50
+ TZOFFSETTO:-#{D}00
51
+ TZNAME:#{Z}DT
52
+ END:DAYLIGHT
53
+ BEGIN:STANDARD
54
+ DTSTART:20071104T020000
55
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
56
+ TZOFFSETFROM:-#{D}00
57
+ TZOFFSETTO:-#{S}00
58
+ TZNAME:#{Z}ST
59
+ END:STANDARD
60
+ END:VTIMEZONE
61
+ END:VCALENDAR
@@ -0,0 +1,41 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2013 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
+ require 'pp'
10
+ require 'when_exe'
11
+ include When
12
+
13
+ range_null = Parts::GeometricComplex.new()
14
+ range_1_1 = Parts::GeometricComplex.new(1)
15
+ range_1_4 = Parts::GeometricComplex.new(1,4)
16
+ range_2_2 = Parts::GeometricComplex.new(2)
17
+ range_2_3 = Parts::GeometricComplex.new(2,3)
18
+ range_2_5 = Parts::GeometricComplex.new(2,5)
19
+ range_4_4 = Parts::GeometricComplex.new(4)
20
+ pp range_1_4
21
+ pp range_2_3
22
+ range_1_4.each {|x| pp x}
23
+ pp range_4_4
24
+ pp range_1_4 | range_2_3
25
+ pp range_1_4.include?(range_2_2)
26
+ pp range_1_4.include?(range_2_3)
27
+ range_1_5 = range_1_4 | range_2_5
28
+ pp range_1_5
29
+ pp range_1_4.include?(range_2_5)
30
+ pp range_1_4 | range_4_4
31
+ pp range_1_4.include?(range_4_4)
32
+ reverse_all = Parts::GeometricComplex.new(true)
33
+ reverse_1_4 = Parts::GeometricComplex.new(1,4, true)
34
+ reverse_2_3 = Parts::GeometricComplex.new(2,3, true)
35
+ reverse_2_5 = Parts::GeometricComplex.new(2,5, true)
36
+ pp reverse_all
37
+ pp reverse_1_4
38
+ pp reverse_2_3
39
+ pp reverse_2_3 | range_2_3
40
+ pp reverse_1_4 | range_2_5
41
+
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Copyright (C) 2011 Takashi SUGA -->
3
+ <!-- You may use and/or modify this file according to the license
4
+ described in the LICENSE.txt file included in this archive. -->
5
+ <object xmlns="http://hosi.org/When/BasicTypes/"
6
+ xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
7
+ xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
8
+ type="http://hosi.org/When/Coordinates/Spatial">
9
+ <rdfs:label country='Japan'>Tokyo</rdfs:label>
10
+ <geo:lat>N35.412011</geo:lat>
11
+ <geo:long>E139.421322</geo:long>
12
+ <geo:alt>0</geo:alt>
13
+ <geo:datum>JGD2000</geo:datum>
14
+ </object>
@@ -0,0 +1,61 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2013 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
+ require 'pp'
10
+ require 'when_exe'
11
+ include When
12
+
13
+ #require 'date'
14
+ #pp now({:clock=>'+0900'}).to_date_time.strftime('%+')
15
+
16
+ #=begin
17
+ date = today
18
+ pp [date.to_s, date.strftime('%D'), date.frame.iri, date.to_time.to_s]
19
+ puts
20
+
21
+ ['Julian', 'ChineseLuniSolar?timezone=9&intercalary_span=3', 'TabularIslamic', 'Jewish', 'LongCount'].each do |calendar|
22
+ date = Calendar(calendar) ^ today
23
+ pp [date.to_s, date.frame.iri]
24
+ end
25
+ puts
26
+
27
+ (today ^ TM::Calendar).each do |date|
28
+ pp [date.to_s, date.frame.iri]
29
+ end
30
+ puts
31
+
32
+ pp today.month_included('SU') {|date, type|
33
+ case type
34
+ when WEEK ; '*'
35
+ when YEAR,MONTH ; date.strftime("%B %Y")
36
+ when DAY ; date[0]
37
+ else ; ''
38
+ end
39
+ }
40
+ puts
41
+
42
+ pp when?('CE1582.10').month_included('SU') {|date, type|
43
+ case type
44
+ when WEEK ; nil
45
+ when YEAR,MONTH ; date.strftime("%B %Y")
46
+ when DAY ; date[0]
47
+ else ; ''
48
+ end
49
+ }
50
+ puts
51
+
52
+ it = Resource("JapanHolidays.ics").enum_for(today.year_included)
53
+ it.each do |date|
54
+ pp date.to_s
55
+ end
56
+ puts
57
+
58
+ Resource("NewYork.ics")
59
+ time = now({:clock=>'America/New_York'})
60
+ pp [time.to_s, time.strftime('%+'), time.clock.tzname[0]]
61
+
data/test/test.rb CHANGED
@@ -1,19 +1,54 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- =begin
4
- Copyright (C) 2011-2013 Takashi SUGA
5
-
6
- You may use and/or modify this file according to the license
7
- described in the COPYING file included in this archive.
8
- =end
9
-
10
- begin
11
- require 'minitest/unit'
12
- require 'minitest/autorun'
13
- Test = MiniTest
14
- rescue LoadError
15
- require 'test/unit'
16
- end
17
-
18
- require 'when_exe'
19
- require './test/tmobjects'
1
+ #!/usr/bin/env ruby
2
+ # -*- coding: utf-8 -*-
3
+ =begin
4
+ Copyright (C) 2011-2013 Takashi SUGA
5
+
6
+ You may use and/or modify this file according to the license
7
+ described in the LICENSE.txt file included in this archive.
8
+ =end
9
+
10
+ require 'pp'
11
+ require 'date'
12
+ begin
13
+ require 'minitest/unit'
14
+ require 'minitest/autorun'
15
+ Test = MiniTest
16
+ class Test::Unit::TestCase
17
+ alias :assert_raise :assert_raises
18
+ end
19
+ rescue LoadError
20
+ require 'test/unit'
21
+ end
22
+
23
+ class Test::Unit::TestCase
24
+ def setup
25
+ When._setup_({:multi_thread=>true})
26
+ end
27
+ end
28
+
29
+ require 'when_exe'
30
+ require 'when_exe/mini_application'
31
+ #include When
32
+
33
+ require './test/parts'
34
+ require './test/basictypes'
35
+ require './test/ephemeris'
36
+ require './test/coordinates'
37
+ require './test/icalendar'
38
+ require './test/tmobjects'
39
+ require './test/tmreference'
40
+ require './test/tmposition'
41
+ require './test/calendartypes'
42
+ require './test/inspect'
43
+ require './test/googlecalendar'
44
+ require './test/region/m17n'
45
+ require './test/region/residue'
46
+ require './test/region/japanese'
47
+ require './test/region/chinese'
48
+ require './test/region/tibetan'
49
+ require './test/region/thai'
50
+ require './test/region/indian'
51
+ require './test/region/iran'
52
+ require './test/region/mayan'
53
+ require './test/region/jewish'
54
+ require './test/region/french'
@@ -0,0 +1 @@
1
+ #@:xxxxxxxx:********
@@ -0,0 +1,368 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2011-2012 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
+ module BasicTypes
12
+
13
+ #
14
+ # ISO 8601 Date and Time Representation
15
+ #
16
+ class DateTime < Unit::TestCase
17
+
18
+ def test__to_array_assert
19
+ assert_raises(TypeError) { When::BasicTypes::DateTime._to_array(1) }
20
+ assert_raises(ArgumentError) { When::BasicTypes::DateTime._to_array("") }
21
+ end
22
+
23
+ def test__x0301_5_2_1
24
+ [ # 5.2.1 暦日付
25
+ ["19850412", [ 0, "1985-04-12"]], # 1 完全表記 基本形式
26
+ ["1985-04-12", [ 0, "1985-04-12"]], # 1 完全表記 拡張形式
27
+ ["1985-04", [-1, "1985-04" ]], # 2 a) 下位省略表記 特定の月 基本形式
28
+ ["1985", [-2, "1985" ]], # 2 b) 下位省略表記 特定の年 基本形式
29
+ ["19", [-4, "1900" ]], # 2 c) 下位省略表記 特定の百年台 基本形式
30
+ ["850412", [ 0, "1985-04-12"]], # 3 a) 上位省略表記 ある百年代の特定の日 基本形式
31
+ ["85-04-12", [ 0, "1985-04-12"]], # 3 a) 上位省略表記 ある百年代の特定の日 拡張形式
32
+ ["-8504", [-1, "1985-04" ]], # 3 b) 上位省略表記 ある百年代の特定の月 基本形式
33
+ ["-85-04", [-1, "1985-04" ]], # 3 b) 上位省略表記 ある百年代の特定の月 拡張形式
34
+ ["-85", [-2, "1985" ]], # 3 c) 上位省略表記 ある百年代の特定の年 基本形式
35
+ ["--0412", [ 0, "1985-04-12"]], # 3 d) 上位省略表記 ある年の特定の月日 基本形式
36
+ ["--04-12", [ 0, "1985-04-12"]], # 3 d) 上位省略表記 ある年の特定の月日 拡張形式
37
+ ["--04", [-1, "1985-04" ]], # 3 e) 上位省略表記 ある年の特定の月 基本形式
38
+ ["---12", [ 0, "1985-04-12"]], # 3 f) 上位省略表記 ある月の特定の日 基本形式
39
+ ["+0019850412", [ 0, "1985-04-12"]], # 4 a) 拡大表記 特定の日 基本形式
40
+ ["+001985-04-12", [ 0, "1985-04-12"]], # 4 a) 拡大表記 特定の日 拡張形式
41
+ ["+001985-04", [-1, "1985-04" ]], # 4 b) 拡大表記 特定の月 基本形式
42
+ ["+001985", [-2, "1985" ]], # 4 c) 拡大表記 特定の年 基本形式
43
+ ["+0019", [-4, "1900" ]], # 4 d) 拡大表記 特定の百年代 基本形式
44
+ ].each do |sample|
45
+ date = When.when?(sample[0], {:abbr=>[1985,4,12]})
46
+ assert_equal(sample[1], [date.precision, date.to_s])
47
+ end
48
+ end
49
+
50
+ def test__x0301_5_2_2
51
+ [ # 5.2.2 年間通算日
52
+ ["1985102", [ 0, "1985-04-12"]], # 1 完全表記 基本形式
53
+ ["1985-102", [ 0, "1985-04-12"]], # 1 完全表記 拡張形式
54
+ ["85102", [ 0, "1985-04-12"]], # 2 a) 上位省略表記 ある百年代の特定の年日 基本形式
55
+ ["85-102", [ 0, "1985-04-12"]], # 2 a) 上位省略表記 ある百年代の特定の年日 拡張形式
56
+ ["-102", [ 0, "1985-04-12"]], # 2 b) 上位省略表記 ある年の特定の日 基本形式
57
+ ["+001985102", [ 0, "1985-04-12"]], # 3 a) 拡大表記 特定の日 基本形式
58
+ ["+001985-102", [ 0, "1985-04-12"]], # 3 a) 拡大表記 特定の日 拡張形式
59
+ ].each do |sample|
60
+ date = When.when?(sample[0], {:abbr=>[1985,4,12]})
61
+ assert_equal(sample[1], [date.precision, date.to_s])
62
+ end
63
+ end
64
+
65
+ def test__x0301_5_2_3
66
+ [ # 5.2.3 暦週日付
67
+ ["1985W155", [ 0, "1985-04-12"]], # 1 完全表記 基本形式
68
+ ["1985-W15-5", [ 0, "1985-04-12"]], # 1 完全表記 拡張形式
69
+ ["1985W15", [ 0, "1985-04-08...1985-04-15"]], # 2 a) 下位省略表記 基本形式
70
+ ["1985-W15", [ 0, "1985-04-08...1985-04-15"]], # 2 a) 下位省略表記 拡張形式
71
+ ["85W155", [ 0, "1985-04-12"]], # 3 a) 上位省略表記 ある百年代における年週日 基本形式
72
+ ["85-W15-5", [ 0, "1985-04-12"]], # 3 a) 上位省略表記 ある百年代における年週日 拡張形式
73
+ ["85W15", [ 0, "1985-04-08...1985-04-15"]], # 3 b) 上位省略表記 ある百年代における年週 基本形式
74
+ ["85-W15", [ 0, "1985-04-08...1985-04-15"]], # 3 b) 上位省略表記 ある百年代における年週 拡張形式
75
+ ["-5W155", [ 0, "1985-04-12"]], # 3 c) 上位省略表記 ある十年代における年週日 基本形式
76
+ ["-5-W15-5", [ 0, "1985-04-12"]], # 3 c) 上位省略表記 ある十年代における年週日 拡張形式
77
+ ["-5W15", [ 0, "1985-04-08...1985-04-15"]], # 3 d) 上位省略表記 ある十年代における年週 基本形式
78
+ ["-5-W15", [ 0, "1985-04-08...1985-04-15"]], # 3 d) 上位省略表記 ある十年代における年週 拡張形式
79
+ ["-W155", [ 0, "1985-04-12"]], # 3 e) 上位省略表記 ある年の週日 基本形式
80
+ ["-W15-5", [ 0, "1985-04-12"]], # 3 e) 上位省略表記 ある年の週日 拡張形式
81
+ ["-W15", [ 0, "1985-04-08...1985-04-15"]], # 3 f) 上位省略表記 ある年の週 基本形式
82
+ ["-W-5", [ 0, "1985-04-12"]], # 3 g) 上位省略表記 ある週の日 基本形式
83
+ ["+001985W155", [ 0, "1985-04-12"]], # 4 a) 拡大表記 特定の日 基本形式
84
+ ["+001985-W15-5", [ 0, "1985-04-12"]], # 4 a) 拡大表記 特定の日 拡張形式
85
+ ["+001985W15", [ 0, "1985-04-08...1985-04-15"]], # 4 b) 拡大表記 特定の週 基本形式
86
+ ["+001985-W15",[ 0, "1985-04-08...1985-04-15"]], # 4 c) 拡大表記 特定の週 拡張形式
87
+ ].each do |sample|
88
+ date = When.when?(sample[0], {:abbr=>[1985,15,5]})
89
+ assert_equal(sample[1], [date.precision, date.to_s])
90
+ end
91
+ end
92
+
93
+ def test__x0301_5_2_4
94
+ [ # 5.2.4 元号による日付
95
+ ["60.04.12", [ 0, "S60(1985).04.12"]], # 1 完全表記 基本形式
96
+ ["S60.04.12", [ 0, "S60(1985).04.12"]], # 1 完全表記 拡張形式
97
+ ].each do |sample|
98
+ date = When.when?(sample[0], {:era_name=>'S'})
99
+ assert_equal(sample[1], [date.precision, date.to_s])
100
+ end
101
+ end
102
+
103
+ def test__x0301_5_3_1
104
+ When::TM::Clock.local_time = When.utc
105
+
106
+ [ # 5.3.1 地方時の時刻
107
+ ["T232050", [ 3, "T23:20:50" ]], # 1 完全表記 基本形式
108
+ ["T23:20:50", [ 3, "T23:20:50" ]], # 1 完全表記 拡張形式
109
+ ["T2320", [ 2, "T23:20" ]], # 2 a) 下位省略表記 特定の時分 基本形式
110
+ ["T23:20", [ 2, "T23:20" ]], # 2 a) 下位省略表記 特定の時分 拡張形式
111
+ ["T23", [ 1, "T23" ]], # 2 b) 下位省略表記 特定の時 基本形式
112
+ ].each do |sample|
113
+ date = When.when?(sample[0])
114
+ assert_equal(sample[1], [date.precision, date.to_s])
115
+ end
116
+
117
+ [ # 3 小数点を用いる表記
118
+ ["T232050.5", 4, [ 4, "T23:20:50.5" ]], # a) 特定の時分秒及び秒の小数部分 基本形式
119
+ ["T152735,5", 4, [ 4, "T15:27:35.5" ]], # a) 特定の時分秒及び秒の小数部分 基本形式
120
+ ["T23:20:50.5", 4, [ 4, "T23:20:50.5" ]], # a) 特定の時分秒及び秒の小数部分 拡張形式
121
+ ["T2320.8", 3, [ 3, "T23:20:48" ]], # b) 特定の時分及び分の小数部分 基本形式
122
+ ["T23:20.8", 3, [ 3, "T23:20:48" ]], # b) 特定の時分及び分の小数部分 拡張形式
123
+ ["T23.3", 2, [ 2, "T23:18" ]], # c) 特定の時及び時の小数部分 基本形式
124
+ ].each do |sample|
125
+ date = When.when?(sample[0], {:precision=>sample[1]})
126
+ assert_equal(sample[2], [date.precision, date.to_s])
127
+ end
128
+
129
+ [ # 4 上位省略表記
130
+ ["T-2050", [ 3, "T23:20:50" ]], # a) ある時“hour”における特定の分秒 基本形式
131
+ ["T-:20:50", [ 3, "T23:20:50" ]], # a) ある時“hour”における特定の分秒 拡張形式
132
+ ["T-20", [ 2, "T23:20" ]], # b) ある時“hour”における特定の分 基本形式
133
+ ["T--50", [ 3, "T23:20:50" ]], # c) ある分の特定の秒 基本形式
134
+ ].each do |sample|
135
+ date = When.when?(sample[0], {:abbr=>[1985,4,12,23,20,50]})
136
+ assert_equal(sample[1], [date.precision, date.to_s])
137
+ end
138
+
139
+ [ # 4 小数点を用いる上位省略表記
140
+ ["T-2050.5", 4, [ 4, "T23:20:50.5" ]], # a) ある時“hour”における特定の分秒 基本形式
141
+ ["T-2735,5", 4, [ 4, "T23:27:35.5" ]], # a) ある時“hour”における特定の分秒 基本形式
142
+ ["T-:20:50.5", 4, [ 4, "T23:20:50.5" ]], # a) ある時“hour”における特定の分秒 拡張形式
143
+ ["T-20.8", 3, [ 3, "T23:20:48" ]], # b) ある時“hour”における特定の分 基本形式
144
+ ["T--50.5", 4, [ 4, "T23:20:50.5" ]], # c) ある分の特定の秒 基本形式
145
+ ].each do |sample|
146
+ date = When.when?(sample[0], {:abbr=>[1985,4,12,23,20,50], :precision=>sample[1]})
147
+ assert_equal(sample[2], [date.precision, date.to_s])
148
+ end
149
+ end
150
+
151
+ def test__x0301_5_3_2
152
+ When::TM::Clock.local_time = When.Clock("+0900")
153
+ [ # 5.3.2 夜の12時
154
+ ["19850412T240000", [ 3, "1985-04-13T00:00:00"]], # 完全表記 基本形式
155
+ ["1985-04-12T24:00:00", [ 3, "1985-04-13T00:00:00"]], # 完全表記 拡張形式
156
+ ["19850412T2400", [ 2, "1985-04-13T00:00" ]], # 下位省略表記 基本形式
157
+ ["1985-04-12T24:00", [ 2, "1985-04-13T00:00" ]], # 下位省略表記 拡張形式
158
+ ].each do |sample|
159
+ date = When.when?(sample[0])
160
+ assert_equal(sample[1], [date.precision, date.to_s])
161
+ end
162
+ end
163
+
164
+ def test__x0301_5_3_3
165
+ [ # 5.3.3 協定世界時(UTC)の時刻
166
+ ["T232050Z", [ 3, "T23:20:50Z" ]], # 1 完全表記 基本形式
167
+ ["T23:20:50Z", [ 3, "T23:20:50Z" ]], # 1 完全表記 拡張形式
168
+ ["T2320Z", [ 2, "T23:20Z" ]], # 2 a) 下位省略表記 特定の時分 基本形式
169
+ ["T23:20Z", [ 2, "T23:20Z" ]], # 2 a) 下位省略表記 特定の時分 拡張形式
170
+ ["T23Z", [ 1, "T23Z" ]], # 2 b) 下位省略表記 特定の時 基本形式
171
+ ].each do |sample|
172
+ date = When.when?(sample[0])
173
+ assert_equal(sample[1], [date.precision, date.to_s])
174
+ end
175
+
176
+ [ # 3 小数点を用いる表記
177
+ ["T232050.5Z", 4, [ 4, "T23:20:50.5Z" ]], # a) 特定の時分秒及び秒の小数部分 基本形式
178
+ ["T23:20:50.5Z",4, [ 4, "T23:20:50.5Z" ]], # a) 特定の時分秒及び秒の小数部分 拡張形式
179
+ ["T2320.8Z", 3, [ 3, "T23:20:48Z" ]], # b) 特定の時分及び分の小数部分 基本形式
180
+ ["T23:20.8Z", 3, [ 3, "T23:20:48Z" ]], # b) 特定の時分及び分の小数部分 拡張形式
181
+ ["T23.3Z", 2, [ 2, "T23:18Z" ]], # c) 特定の時及び時の小数部分 基本形式
182
+ ].each do |sample|
183
+ date = When.when?(sample[0], {:precision=>sample[1]})
184
+ assert_equal(sample[2], [date.precision, date.to_s])
185
+ end
186
+
187
+ [ # 4 上位省略表記
188
+ ["T-2050Z", [ 3, "T23:20:50Z" ]], # a) ある時“hour”における特定の分秒 基本形式
189
+ ["T-:20:50Z", [ 3, "T23:20:50Z" ]], # a) ある時“hour”における特定の分秒 拡張形式
190
+ ["T-20Z", [ 2, "T23:20Z" ]], # b) ある時“hour”における特定の分 基本形式
191
+ ["T--50Z", [ 3, "T23:20:50Z" ]], # c) ある分の特定の秒 基本形式
192
+ ].each do |sample|
193
+ date = When.when?(sample[0], {:abbr=>[1985,4,12,23,20,50]})
194
+ assert_equal(sample[1], [date.precision, date.to_s])
195
+ end
196
+
197
+ [ # 4 小数点を用いる上位省略表記
198
+ ["T-2050.5Z", 4, [ 4, "T23:20:50.5Z" ]], # a) ある時“hour”における特定の分秒 基本形式
199
+ ["T-:20:50.5Z", 4, [ 4, "T23:20:50.5Z" ]], # a) ある時“hour”における特定の分秒 拡張形式
200
+ ["T-20.8Z", 3, [ 3, "T23:20:48Z" ]], # b) ある時“hour”における特定の分 基本形式
201
+ ["T--50.5Z", 4, [ 4, "T23:20:50.5Z" ]], # c) ある分の特定の秒 基本形式
202
+ ].each do |sample|
203
+ date = When.when?(sample[0], {:abbr=>[1985,4,12,23,20,50], :precision=>sample[1]})
204
+ assert_equal(sample[2], [date.precision, date.to_s])
205
+ end
206
+ end
207
+
208
+ def test__x0301_5_3_4
209
+ [ # 5.3.4 地方時及び協定世界時
210
+ ["T+0100", [ 0, "T+01:00" ]], # 1 地方時と協定世界時との差(時差の表記) 基本形式
211
+ ["T+01", [ 0, "T+01:00" ]], # 1 地方時と協定世界時との差(時差の表記) 基本形式
212
+ ["T+01:00", [ 0, "T+01:00" ]], # 1 地方時と協定世界時との差(時差の表記) 拡張形式
213
+ ["T152746+0100", [ 3, "T15:27:46+01:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 基本形式
214
+ ["T152746-0500", [ 3, "T15:27:46-05:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 基本形式
215
+ ["T152746+01", [ 3, "T15:27:46+01:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 基本形式
216
+ ["T152746-05", [ 3, "T15:27:46-05:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 基本形式
217
+ ["T15:27:46+01:00", [ 3, "T15:27:46+01:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 拡張形式
218
+ ["T15:27:46-05:00", [ 3, "T15:27:46-05:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 拡張形式
219
+ ["T15:27:46+01", [ 3, "T15:27:46+01:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 拡張形式
220
+ ["T15:27:46-05", [ 3, "T15:27:46-05:00" ]], # 2 地方時と協定世界時との差(地方時の表記) 拡張形式
221
+ ].each do |sample|
222
+ date = When.when?(sample[0])
223
+ assert_equal(sample[1], [date.precision, date.to_s])
224
+ end
225
+ end
226
+
227
+ def test__x0301_5_4_2
228
+ When::TM::Clock.local_time = When.Clock("+0900")
229
+ [ # 5.4.2 完全表記以外の表記
230
+ ["19850412T1015", [ 2, "1985-04-12T10:15" ]], # a) 暦日付及び地方時 基本形式
231
+ ["1985-04-12T10:15", [ 2, "1985-04-12T10:15" ]], # a) 暦日付及び地方時 拡張形式
232
+ ["1985102T1015Z", [ 2, "1985-04-12T10:15Z" ]], # b) 年間通算日及び協定世界時 基本形式
233
+ ["1985-102T10:15Z", [ 2, "1985-04-12T10:15Z" ]], # b) 年間通算日及び協定世界時 拡張形式
234
+ ["1985W155T1015+0400", [ 2, "1985-04-12T10:15+04:00" ]], # c) 暦週日付,地方時,及びUTCとの差 基本形式
235
+ ["1985-W15-5T10:15+04:00",[ 2, "1985-04-12T10:15+04:00" ]], # c) 暦週日付,地方時,及びUTCとの差 拡張形式
236
+ ].each do |sample|
237
+ date = When.when?(sample[0])
238
+ assert_equal(sample[1], [date.precision, date.to_s])
239
+ end
240
+ end
241
+
242
+ def test__x0301_5_5_4
243
+ When::TM::Clock.local_time = When.Clock("+0900") # 時間間隔の表記
244
+ [ # 5.5.4 完全表記
245
+ ["19850412T232050/19850625T103000", "1985-04-12T23:20:50..1985-06-25T10:30:00" ], # 1 始点及び終点 基本形式
246
+ ["1985-04-12T23:20:50/1985-06-25T10:30:00", "1985-04-12T23:20:50..1985-06-25T10:30:00" ], # 1 始点及び終点 拡張形式
247
+ ["P2Y10M15DT10H30M20S", "P2Y10M15DT10H30M20S" ], # 2.1 時間の単位の指示記号付
248
+ ["P6W", "P6W" ], # 2.1 時間の単位の指示記号付
249
+ ["P1Y6M", "P1Y6M" ], # 2.1 時間の単位の指示記号付
250
+ ["PT72H", "PT72H" ], # 2.1 時間の単位の指示記号付
251
+ ["P00021015T103020", "P2Y10M15DT10H30M20S" ], # 2.2 代用形式 基本形式
252
+ ["P0001-06", "P1Y6M" ], # 2.2 代用形式 基本形式
253
+ ["P010600", "P1Y6M" ], # 2.2 代用形式 基本形式
254
+ ["P0002-10-15T10:30:20", "P2Y10M15DT10H30M20S" ], # 2.2 代用形式 拡張形式
255
+ ["19850412T232050/P1Y2M15DT12H30M0S", "1985-04-12T23:20:50...1986-06-28T11:50:50"], # 3 始点及び時間長 基本形式
256
+ ["19850412T232050/P00010215T123000", "1985-04-12T23:20:50...1986-06-28T11:50:50"], # 3 始点及び時間長 基本形式
257
+ ["1985-04-12T23:20:50/P1Y2M15DT12H30M0S", "1985-04-12T23:20:50...1986-06-28T11:50:50"], # 3 始点及び時間長 拡張形式
258
+ ["1985-04-12T23:20:50/P0001-02-15T12:30:00","1985-04-12T23:20:50...1986-06-28T11:50:50"], # 3 始点及び時間長 拡張形式
259
+ ["P1Y2M15DT12H30M0S/19850412T232050", "1984-01-28T10:50:50..1985-04-12T23:20:50" ], # 4 時間長及び終点 基本形式
260
+ ["P00010215T123000/19850412T232050", "1984-01-28T10:50:50..1985-04-12T23:20:50" ], # 4 時間長及び終点 基本形式
261
+ ["P1Y2M15DT12H30M0S/1985-04-12T23:20:50", "1984-01-28T10:50:50..1985-04-12T23:20:50" ], # 4 時間長及び終点 拡張形式
262
+ ["P0001-02-15T12:30:00/1985-04-12T23:20:50","1984-01-28T10:50:50..1985-04-12T23:20:50" ], # 4 時間長及び終点 拡張形式
263
+ ].each do |sample|
264
+ assert_equal(sample[1], When.when?(sample[0]).to_s)
265
+ end
266
+ end
267
+
268
+ def test__x0301_5_6_3
269
+ When::TM::Clock.local_time = When.Clock("+0900") # 反復時間間隔の表記
270
+ [ # 5.6.3 完全表記
271
+ ["R2/19850412T232050/19850625T103000", ["1985-04-12T23:20:50","1985-06-25T10:30:00"]], # 始点及び終点
272
+ ["R2/P2Y10M15DT10H30M20S", ["P2Y10M15DT10H30M20S","P2Y10M15DT10H30M20S"]], # 時間間隔
273
+ ["R2/19850412T232050/P1Y2M15DT12H30M0S", ["1985-04-12T23:20:50","1986-06-28T11:50:50"]], # 始点及び時間間隔
274
+ ["R2/P1Y2M15DT12H30M0S/19850412T232050", ["1984-01-28T10:50:50","1985-04-12T23:20:50"]], # 時間間隔及び終点
275
+ ].each do |sample|
276
+ event = When.when?(sample[0])
277
+ sample[1].each do |date|
278
+ assert_equal(date, event.shift.to_s)
279
+ end
280
+ end
281
+ [ # 5.6.3 完全表記
282
+ ["R/19850412T232050/19850625T103000", ["1985-04-12T23:20:50","1985-06-25T10:30:00"]], # 始点及び終点
283
+ ["R/19850412T232050/P1Y2M15DT12H30M0S", ["1985-04-12T23:20:50","1986-06-28T11:50:50"]], # 始点及び時間間隔
284
+ ].each do |sample|
285
+ event = When.when?(sample[0]).each
286
+ sample[1].each do |date|
287
+ assert_equal(date, event.succ.to_s)
288
+ end
289
+ end
290
+ end
291
+ end
292
+
293
+ #
294
+ # ISO 8601 Date Representation
295
+ #
296
+ class Date < Unit::TestCase
297
+ def test__to_array_basic_ISO8601
298
+ assert_equal([nil, [1985,4,12]], When::BasicTypes::Date._to_array_basic_ISO8601('19850412'))
299
+ assert_equal([nil, [1985]], When::BasicTypes::Date._to_array_basic_ISO8601('1985'))
300
+ assert_equal([:century, [1900]], When::BasicTypes::Date._to_array_basic_ISO8601('19'))
301
+ end
302
+
303
+ def test__to_array_extended_ISO8601
304
+ assert_equal([nil, [1985,4,12]], When::BasicTypes::Date._to_array_extended_ISO8601('1985-04-12'))
305
+ assert_equal([nil, [1985,4]], When::BasicTypes::Date._to_array_extended_ISO8601('1985-04'))
306
+ # assert_equal([19,nil,nil], When::BasicTypes::Date._to_array_extended_ISO8601('19'))
307
+ end
308
+ end
309
+
310
+ #
311
+ # ISO 8601 Time Representation
312
+ #
313
+ class Time < Unit::TestCase
314
+ def test_nothing
315
+ end
316
+ end
317
+
318
+ #
319
+ # M17n String
320
+ #
321
+ class M17n < Unit::TestCase
322
+ Term1 = When::BasicTypes::M17n.new('Tokyo', 'zip')
323
+ Term2 = When::BasicTypes::M17n.new(<<LABEL, <<NS, <<LOCALE)
324
+ [
325
+ Getsuyou
326
+ Monday
327
+ ]
328
+ LABEL
329
+ ISO, jwiki=http://ja.wikipedia.org/wiki/, ewiki=http://en.wikipedia.org/wiki/
330
+ NS
331
+ =jwiki:, en=ewiki:
332
+ LOCALE
333
+ Term3 = When.Resource('_co:CommonResidue::Week::Monday::Monday')
334
+
335
+ def test__code_space
336
+ assert_equal('zip', Term1.codeSpace)
337
+ assert_equal("ISO", Term2.codeSpace)
338
+ assert_equal(nil, Term3.codeSpace)
339
+ end
340
+
341
+ def test__label
342
+ assert_equal("Getsuyou", Term2.label)
343
+ assert_equal(String, Term2.label.class)
344
+ assert_equal("Monday", Term3.label)
345
+ end
346
+ end
347
+
348
+ class Object < Unit::TestCase
349
+ def test_nothing
350
+ end
351
+ end
352
+
353
+ end
354
+
355
+ module RS
356
+ class Identifier < Unit::TestCase
357
+ def test_nothing
358
+ end
359
+ end
360
+ end
361
+
362
+ module EX
363
+ class Extent < Unit::TestCase
364
+ def test_nothing
365
+ end
366
+ end
367
+ end
368
+ end