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