when_exe 0.3.2 → 0.3.3

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 (93) hide show
  1. data/LICENSE.ja.txt +25 -25
  2. data/LICENSE.txt +31 -31
  3. data/bin/locales.rb +2 -1
  4. data/bin/when.rb.config +1 -1
  5. data/lib/when_exe.rb +70 -48
  6. data/lib/when_exe/basictypes.rb +99 -65
  7. data/lib/when_exe/calendartypes.rb +40 -178
  8. data/lib/when_exe/coordinates.rb +156 -62
  9. data/lib/when_exe/core/compatibility.rb +10 -0
  10. data/lib/when_exe/core/extension.rb +40 -0
  11. data/lib/when_exe/ephemeris.rb +112 -50
  12. data/lib/when_exe/icalendar.rb +125 -91
  13. data/lib/when_exe/inspect.rb +100 -48
  14. data/lib/when_exe/locales/ar.rb +48 -48
  15. data/lib/when_exe/locales/bg.rb +1 -1
  16. data/lib/when_exe/locales/bs.rb +4 -2
  17. data/lib/when_exe/locales/ca.rb +1 -1
  18. data/lib/when_exe/locales/en_CA.rb +3 -4
  19. data/lib/when_exe/locales/en_IE.rb +88 -0
  20. data/lib/when_exe/locales/en_US.rb +87 -0
  21. data/lib/when_exe/locales/es_CR.rb +84 -0
  22. data/lib/when_exe/locales/es_EC.rb +85 -0
  23. data/lib/when_exe/locales/es_PA.rb +85 -0
  24. data/lib/when_exe/locales/fr.rb +39 -39
  25. data/lib/when_exe/locales/hu.rb +15 -14
  26. data/lib/when_exe/locales/it.rb +1 -1
  27. data/lib/when_exe/locales/ja.rb +2 -2
  28. data/lib/when_exe/locales/locales.rb +7 -0
  29. data/lib/when_exe/locales/lt.rb +21 -19
  30. data/lib/when_exe/locales/ms.rb +84 -0
  31. data/lib/when_exe/locales/nl.rb +2 -2
  32. data/lib/when_exe/locales/ru.rb +1 -1
  33. data/lib/when_exe/locales/uk.rb +1 -1
  34. data/lib/when_exe/locales/ur.rb +84 -0
  35. data/lib/when_exe/mini_application.rb +44 -43
  36. data/lib/when_exe/parts/enumerator.rb +3 -3
  37. data/lib/when_exe/parts/geometric_complex.rb +6 -1
  38. data/lib/when_exe/parts/locale.rb +49 -18
  39. data/lib/when_exe/parts/method_cash.rb +61 -0
  40. data/lib/when_exe/parts/resource.rb +221 -106
  41. data/lib/when_exe/parts/timezone.rb +70 -33
  42. data/lib/when_exe/region/bahai.rb +2 -2
  43. data/lib/when_exe/region/balinese.rb +40 -43
  44. data/lib/when_exe/region/chinese.rb +93 -33
  45. data/lib/when_exe/region/chinese_calendar.rb +117 -1
  46. data/lib/when_exe/region/chinese_epoch.rb +65 -10
  47. data/lib/when_exe/region/christian.rb +97 -2
  48. data/lib/when_exe/region/ephemeric_notes.rb +353 -0
  49. data/lib/when_exe/region/french.rb +1 -1
  50. data/lib/when_exe/region/geologicalage.rb +171 -171
  51. data/lib/when_exe/region/indian.rb +18 -14
  52. data/lib/when_exe/region/iranian.rb +1 -1
  53. data/lib/when_exe/region/japanese.rb +49 -12
  54. data/lib/when_exe/region/japanese_notes.rb +838 -507
  55. data/lib/when_exe/region/japanese_residues.rb +724 -662
  56. data/lib/when_exe/region/javanese.rb +7 -7
  57. data/lib/when_exe/region/mayan.rb +19 -17
  58. data/lib/when_exe/region/nihon_shoki.rb +3 -3
  59. data/lib/when_exe/region/residue.rb +29 -28
  60. data/lib/when_exe/region/shire.rb +2 -2
  61. data/lib/when_exe/region/tibetan.rb +87 -5
  62. data/lib/when_exe/region/world.rb +1 -1
  63. data/lib/when_exe/timestandard.rb +85 -7
  64. data/lib/when_exe/tmobjects.rb +32 -4
  65. data/lib/when_exe/tmposition.rb +104 -55
  66. data/lib/when_exe/tmreference.rb +157 -60
  67. data/lib/when_exe/version.rb +2 -2
  68. data/test/examples/JapanHolidays.ics +3 -3
  69. data/test/examples/JapanHolidaysRFC6350.ics +499 -0
  70. data/test/examples/Residue.m17n +3 -2
  71. data/test/examples/Spatial.m17n +3 -3
  72. data/test/examples/USA-DST.ics +27 -27
  73. data/test/examples/today.rb +1 -1
  74. data/test/test.rb +4 -2
  75. data/test/test/basictypes.rb +40 -15
  76. data/test/test/coordinates.rb +9 -4
  77. data/test/test/icalendar.rb +24 -14
  78. data/test/test/inspect.rb +5 -3
  79. data/test/test/parts.rb +11 -2
  80. data/test/test/region/chinese.rb +4 -4
  81. data/test/test/region/civil.rb +124 -0
  82. data/test/test/region/geologicalage.rb +5 -2
  83. data/test/test/region/indian.rb +2 -0
  84. data/test/test/region/japanese.rb +156 -1
  85. data/test/test/region/jewish.rb +3 -3
  86. data/test/test/region/m17n.rb +9 -9
  87. data/test/test/region/mayan.rb +122 -5
  88. data/test/test/region/residue.rb +1 -1
  89. data/test/test/tmobjects.rb +27 -64
  90. data/test/test/tmposition.rb +48 -1
  91. data/test/test/tmreference.rb +66 -4
  92. data/when_exe.gemspec +1 -1
  93. metadata +15 -6
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
3
+ Copyright (C) 2011-2014 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -11,7 +11,7 @@ module Test
11
11
  class Chinese < Test::Unit::TestCase
12
12
  def test_chinese_date
13
13
 
14
- emd = When.Resource('_c:EphemerisBasedSolar')
14
+ emd = When.Resource('_c:EphemerisBasedSolar?time_basis=+09:00')
15
15
  date = When.when?('2009-01-01', {:frame=>emd})
16
16
  [
17
17
  ["2009-01-01", 2454867],
@@ -31,7 +31,7 @@ module Test
31
31
  date += When.Duration('P1M')
32
32
  end
33
33
 
34
- cc = When::CalendarTypes::ChineseLuniSolar.new({'timezone'=>9})
34
+ cc = When::CalendarTypes::ChineseLuniSolar.new({'time_basis'=>'+09:00'})
35
35
  date = When.when?('2009-01-01', {:frame=>cc})
36
36
  [
37
37
  ["2009-01-01", 2454858],
@@ -91,7 +91,7 @@ module Test
91
91
  date += When.Duration('P1M')
92
92
  end
93
93
 
94
- cc = When::CalendarTypes::ChineseLuniSolar.new({'timezone'=>9, 'intercalary_span'=>3})
94
+ cc = When::CalendarTypes::ChineseLuniSolar.new({'time_basis'=>'+09:00', 'intercalary_span'=>3})
95
95
  date = When.when?('2728-11-01', {:frame=>cc})
96
96
  [
97
97
  ["2728-11-01", 2717768],
@@ -0,0 +1,124 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin
3
+ Copyright (C) 2012-2014 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
+ class Civil < Test::Unit::TestCase
12
+ def test__border
13
+ frame = When.Calendar('Civil?reform=1752-9-14&border=0-3-25(1753)0-1-1')
14
+ assert_equal("1641=03-24", (frame ^ When.when?('1642-4-3') ).to_s)
15
+ assert_equal("1642-03-25", (frame ^ When.when?('1642-4-4') ).to_s)
16
+ assert_equal("1752-12-31", (frame ^ When.when?('1752-12-31')).to_s)
17
+ assert_equal("1753-01-01", (frame ^ When.when?('1753-1-1') ).to_s)
18
+ assert_equal("1753-03-24", (frame ^ When.when?('1753-3-24') ).to_s)
19
+ assert_equal("1753-03-25", (frame ^ When.when?('1753-3-25') ).to_s)
20
+ end
21
+
22
+ def test__reform_inc
23
+ sample = %w(
24
+ 1582-09-30 1582-10-01 1582-10-02 1582-10-03 1582-10-04 1582-10-15 1582-10-16 1582-10-17
25
+ 1582-10-18 1582-10-19 1582-10-20 1582-10-21 1582-10-22 1582-10-23 1582-10-24 1582-10-25
26
+ 1582-10-26 1582-10-27 1582-10-28 1582-10-29 1582-10-30 1582-10-31 1582-11-01 1582-11-02
27
+ 1582-11-03)
28
+ date = When.when?('1582-9-30', :frame=>'Civil?reform=1582-10-15')
29
+ 25.times do
30
+ assert_equal(sample.shift, date.to_s)
31
+ date = date + When::DurationP1D
32
+ end
33
+ end
34
+
35
+ def test__reform_dec
36
+ sample = %w(
37
+ 1582-11-01 1582-10-31 1582-10-30 1582-10-29 1582-10-28 1582-10-27 1582-10-26 1582-10-25
38
+ 1582-10-24 1582-10-23 1582-10-22 1582-10-21 1582-10-20 1582-10-19 1582-10-18 1582-10-17
39
+ 1582-10-16 1582-10-15 1582-10-04 1582-10-03 1582-10-02 1582-10-01 1582-09-30 1582-09-29
40
+ 1582-09-28)
41
+ date = When.when?('1582-11-01', :frame=>'Civil?reform=1582-10-15')
42
+ 25.times do
43
+ assert_equal(sample.shift, date.to_s)
44
+ date = date - When::DurationP1D
45
+ end
46
+ end
47
+
48
+ def test__reform_year
49
+ date = When.when?('1752^^Civil?reform=1752-9-14&border=(1000)0-3-25(1753)0-1-1')
50
+ assert_equal(
51
+ [[1752,
52
+ [[3,
53
+ ["*", 1, 2, 3, 4, 5, 6, 7],
54
+ ["*", 8, 9, 10, 11, 12, 13, 14],
55
+ ["*", 15, 16, 17, 18, 19, 20, 21],
56
+ ["*", 22, 23, 24, 25, 26, 27, 28],
57
+ ["*", 29, 30, 31, "*", "*", "*", "*"]]],
58
+ [[4,
59
+ ["*", "*", "*", "*", 1, 2, 3, 4],
60
+ ["*", 5, 6, 7, 8, 9, 10, 11],
61
+ ["*", 12, 13, 14, 15, 16, 17, 18],
62
+ ["*", 19, 20, 21, 22, 23, 24, 25],
63
+ ["*", 26, 27, 28, 29, 30, "*", "*"]]],
64
+ [[5,
65
+ ["*", "*", "*", "*", "*", "*", 1, 2],
66
+ ["*", 3, 4, 5, 6, 7, 8, 9],
67
+ ["*", 10, 11, 12, 13, 14, 15, 16],
68
+ ["*", 17, 18, 19, 20, 21, 22, 23],
69
+ ["*", 24, 25, 26, 27, 28, 29, 30],
70
+ ["*", 31, "*", "*", "*", "*", "*", "*"]]],
71
+ [[6,
72
+ ["*", "*", 1, 2, 3, 4, 5, 6],
73
+ ["*", 7, 8, 9, 10, 11, 12, 13],
74
+ ["*", 14, 15, 16, 17, 18, 19, 20],
75
+ ["*", 21, 22, 23, 24, 25, 26, 27],
76
+ ["*", 28, 29, 30, "*", "*", "*", "*"]]],
77
+ [[7,
78
+ ["*", "*", "*", "*", 1, 2, 3, 4],
79
+ ["*", 5, 6, 7, 8, 9, 10, 11],
80
+ ["*", 12, 13, 14, 15, 16, 17, 18],
81
+ ["*", 19, 20, 21, 22, 23, 24, 25],
82
+ ["*", 26, 27, 28, 29, 30, 31, "*"]]],
83
+ [[8,
84
+ ["*", "*", "*", "*", "*", "*", "*", 1],
85
+ ["*", 2, 3, 4, 5, 6, 7, 8],
86
+ ["*", 9, 10, 11, 12, 13, 14, 15],
87
+ ["*", 16, 17, 18, 19, 20, 21, 22],
88
+ ["*", 23, 24, 25, 26, 27, 28, 29],
89
+ ["*", 30, 31, "*", "*", "*", "*", "*"]]],
90
+ [[9,
91
+ ["*", "*", "*", 1, 2, 14, 15, 16],
92
+ ["*", 17, 18, 19, 20, 21, 22, 23],
93
+ ["*", 24, 25, 26, 27, 28, 29, 30]]],
94
+ [[10,
95
+ ["*", 1, 2, 3, 4, 5, 6, 7],
96
+ ["*", 8, 9, 10, 11, 12, 13, 14],
97
+ ["*", 15, 16, 17, 18, 19, 20, 21],
98
+ ["*", 22, 23, 24, 25, 26, 27, 28],
99
+ ["*", 29, 30, 31, "*", "*", "*", "*"]]],
100
+ [[11,
101
+ ["*", "*", "*", "*", 1, 2, 3, 4],
102
+ ["*", 5, 6, 7, 8, 9, 10, 11],
103
+ ["*", 12, 13, 14, 15, 16, 17, 18],
104
+ ["*", 19, 20, 21, 22, 23, 24, 25],
105
+ ["*", 26, 27, 28, 29, 30, "*", "*"]]],
106
+ [[12,
107
+ ["*", "*", "*", "*", "*", "*", 1, 2],
108
+ ["*", 3, 4, 5, 6, 7, 8, 9],
109
+ ["*", 10, 11, 12, 13, 14, 15, 16],
110
+ ["*", 17, 18, 19, 20, 21, 22, 23],
111
+ ["*", 24, 25, 26, 27, 28, 29, 30],
112
+ ["*", 31, "*", "*", "*", "*", "*", "*"]]]]],
113
+ date.year_included('Sunday') {|d,b|
114
+ case b
115
+ when When::YEAR ; d[When::YEAR]
116
+ when When::MONTH ; d[When::MONTH]
117
+ when When::DAY ; d[When::DAY]
118
+ else ; '*'
119
+ end
120
+ }
121
+ )
122
+ end
123
+ end
124
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011 Takashi SUGA
3
+ Copyright (C) 2011-2013 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -8,7 +8,10 @@
8
8
 
9
9
  module Test::TM
10
10
  class GeologicalAge < Test::Unit::TestCase
11
- def test_nothing
11
+ def test__geological_age
12
+ age = When.Resource('_tm:OrdinalReferenceSystem/GeologicalAge')
13
+ assert_equal("-2500000000", age['始生代::新始生代'].end.to_s)
14
+ assert_equal("-09700", age['顕生代::新生代::第四紀::完新世'].begin.to_s)
12
15
  end
13
16
  end
14
17
  end
@@ -50,6 +50,8 @@ module Test
50
50
  cc = When.Calendar('HinduSolar?type=SBS')
51
51
  date = When.when?('1913-01-01', {:frame=>cc})
52
52
  assert_equal([2448361, "1913-01-01", "1991-04-14"], [date.to_i, date.to_s, date.to_date.to_s])
53
+ date = When::CalendarTypes::CalendarNote::HinduNote::Dates.new(date)
54
+ assert_equal(2448361, date.to_i)
53
55
  end
54
56
  end
55
57
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2012 Takashi SUGA
3
+ Copyright (C) 2011-2014 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -42,6 +42,161 @@ module Test
42
42
  end
43
43
  end
44
44
 
45
+ def test__solar_terms
46
+ sample = [
47
+ [ # 修正後
48
+ ["貞観12(0870).07.17T+00", []],
49
+ ["貞観12(0870).07.18T+00", ["処暑(150)", "鷹乃祭鳥", "公損", "没"]],
50
+ ["貞観12(0870).07.19T+00", []],
51
+
52
+ ["天喜05(1057).03.10T+00", []],
53
+ ["天喜05(1057).03.11T+00", ["穀雨(30)", "萍始生", "公革", "没"]],
54
+ ["天喜05(1057).03.12T+00", []],
55
+
56
+ ["建仁02(1202).10=29T+00", ["没"]],
57
+ ["建仁02(1202).11.01T+00", ["冬至(270)", "蚯蚓結", "公中孚"]],
58
+ ["建仁02(1202).11.02T+00", []],
59
+ ["建仁02(1202).11.03T+00", []],
60
+
61
+ ["寛元01(1243).11.03T+00", []],
62
+ ["寛元01(1243).11.04T+00", ["冬至(270)", "蚯蚓結", "公中孚", "没"]],
63
+ ["寛元01(1243).11.05T+00", []],
64
+
65
+ ["弘安04(1281).07=30T+00", ["没"]],
66
+ ["弘安04(1281).08.01T+00", ["秋分(180)", "雷乃收聲", "公賁"]],
67
+ ["弘安04(1281).08.02T+00", []],
68
+
69
+ ["永享02(1430).07.11T+00", ["没"]],
70
+ ["永享02(1430).07.12T+00", []],
71
+ ["永享02(1430).07.13T+00", []],
72
+ ["永享02(1430).07.14T+00", ["大夫節"]],
73
+ ["永享02(1430).07.15T+00", []],
74
+ ["永享02(1430).07.16T+00", ["白露降"]],
75
+ ["永享02(1430).07.17T+00", []],
76
+ ["永享02(1430).07.18T+00", []],
77
+ ["永享02(1430).07.19T+00", ["往亡"]],
78
+ ["永享02(1430).07.20T+00", ["卿同人"]],
79
+ ["永享02(1430).07.21T+00", ["寒蟬鳴"]],
80
+ ["永享02(1430).07.22T+00", []],
81
+ ["永享02(1430).07.23T+00", []],
82
+ ["永享02(1430).07.24T+00", []],
83
+ ["永享02(1430).07.25T+00", []],
84
+
85
+ ["元和03(1617).03.18T+00", []],
86
+ ["元和03(1617).03.19T+00", ["穀雨(30)", "萍始生", "公革", "没"]],
87
+ ["元和03(1617).03.20T+00", []],
88
+
89
+ ["平成06(1994).06.21T+09:00", ["夏至(90)", "乃東枯"]],
90
+ ["平成06(1994).06.22T+09:00", []]
91
+ ],
92
+
93
+ [ # 修正前
94
+ ["貞観12(0870).07.17T+00", ["没"]],
95
+ ["貞観12(0870).07.18T+00", ["処暑(150)", "鷹乃祭鳥", "公損"]],
96
+ ["貞観12(0870).07.19T+00", []],
97
+
98
+ ["天喜05(1057).03.10T+00", ["没"]],
99
+ ["天喜05(1057).03.11T+00", ["穀雨(30)", "萍始生", "公革"]],
100
+ ["天喜05(1057).03.12T+00", []],
101
+
102
+ ["建仁02(1202).10=29T+00", ["冬至(270)", "蚯蚓結", "公中孚"]],
103
+ ["建仁02(1202).11.01T+00", []],
104
+ ["建仁02(1202).11.02T+00", []],
105
+ ["建仁02(1202).11.03T+00", ["没"]],
106
+
107
+ ["寛元01(1243).11.03T+00", ["没"]],
108
+ ["寛元01(1243).11.04T+00", ["冬至(270)", "蚯蚓結", "公中孚"]],
109
+ ["寛元01(1243).11.05T+00", []],
110
+
111
+ ["弘安04(1281).07=30T+00", ["秋分(180)", "雷乃收聲", "公賁"]],
112
+ ["弘安04(1281).08.01T+00", []],
113
+ ["弘安04(1281).08.02T+00", ["没"]],
114
+
115
+ ["永享02(1430).07.11T+00", []],
116
+ ["永享02(1430).07.12T+00", []],
117
+ ["永享02(1430).07.13T+00", ["大夫節"]],
118
+ ["永享02(1430).07.14T+00", []],
119
+ ["永享02(1430).07.15T+00", ["白露降"]],
120
+ ["永享02(1430).07.16T+00", []],
121
+ ["永享02(1430).07.17T+00", []],
122
+ ["永享02(1430).07.18T+00", ["往亡"]],
123
+ ["永享02(1430).07.19T+00", ["卿同人"]],
124
+ ["永享02(1430).07.20T+00", ["寒蟬鳴"]],
125
+ ["永享02(1430).07.21T+00", []],
126
+ ["永享02(1430).07.22T+00", []],
127
+ ["永享02(1430).07.23T+00", []],
128
+ ["永享02(1430).07.24T+00", []],
129
+ ["永享02(1430).07.25T+00", ["没"]],
130
+
131
+ ["元和03(1617).03.18T+00", ["没"]],
132
+ ["元和03(1617).03.19T+00", ["穀雨(30)", "萍始生", "公革"]],
133
+ ["元和03(1617).03.20T+00", []],
134
+
135
+ ["平成06(1994).06.21T+09:00", ["夏至(90)", "乃東枯"]],
136
+ ["平成06(1994).06.22T+09:00", []]
137
+ ]
138
+ ]
139
+
140
+ 2.times do
141
+ result = []
142
+ [2039054..2039056,
143
+ 2107233..2107235,
144
+ 2160437..2160440,
145
+ 2175412..2175414,
146
+ 2189200..2189202,
147
+ 2243577..2243591,
148
+ 2311770..2311772,
149
+ 2449525..2449526].each do |range|
150
+ range.each do |jdn|
151
+ (When.when?(jdn) ^ When.CalendarEra('Japanese')).each do |date|
152
+ dates = When.CalendarNote('JapaneseNote').send(:_to_date_for_note, date)
153
+ date = When.when?(dates.o_date.to_cal_date.to_s,
154
+ {:clock=>dates.s_date.frame.time_basis})
155
+ long = dates.cal4note.s_terms.position(date)
156
+ notes = date.notes(:indices => When::DAY,
157
+ :notes => (13<<9|1<<48|1<<71),
158
+ :locale => 'ja').map {|n| n[:value]}
159
+ result << [date.to_m17n/'ja', notes]
160
+ end
161
+ end
162
+ end
163
+ assert_equal(sample.shift, result)
164
+ When::CalendarTypes::CalendarNote::JapaneseNote::SolarTerms.send(:patch=, {})
165
+ end
166
+ When::CalendarTypes::CalendarNote::JapaneseNote::SolarTerms.send(:patch=, nil)
167
+ end
168
+
169
+ def test__lunar_phases
170
+ [%w(康和3.01.09 康和3.01.16 康和3.01.23),
171
+ %w(康和3.02.08 康和3.02.16 康和3.02.23),
172
+ %w(康和3.03.08 康和3.03.15 康和3.03.22),
173
+ %w(康和3.04.09 康和3.04.16 康和3.04.23),
174
+ %w(康和3.05.08 康和3.05.15 康和3.05.22),
175
+ %w(康和3.06.08 康和3.06.15 康和3.06.23),
176
+ %w(康和3.07.08 康和3.07.15 康和3.07.22),
177
+ %w(康和3.08.07 康和3.08.14 康和3.08.22),
178
+ %w(康和3.09.07 康和3.09.15 康和3.09.23),
179
+ %w(康和3.10.08 康和3.10.15 康和3.10.23),
180
+ %w(康和3.11.07 康和3.11.15 康和3.11.23),
181
+ %w(康和3.12.08 康和3.12.16 康和3.12.23),
182
+
183
+ %w(平成26.01.01 平成26.01.08 平成26.01.16 平成26.01.24),
184
+ %w(平成26.01.31 平成26.02.07 平成26.02.15 平成26.02.23),
185
+ %w(平成26.03.01 平成26.03.08 平成26.03.17 平成26.03.24),
186
+ %w(平成26.03.31 平成26.04.07 平成26.04.15 平成26.04.22),
187
+ %w(平成26.04.29 平成26.05.07 平成26.05.15 平成26.05.21),
188
+ %w(平成26.05.29 平成26.06.06 平成26.06.13 平成26.06.20),
189
+ %w(平成26.06.27 平成26.07.05 平成26.07.12 平成26.07.19),
190
+ %w(平成26.07.27 平成26.08.04 平成26.08.11 平成26.08.17),
191
+ %w(平成26.08.25 平成26.09.02 平成26.09.09 平成26.09.16),
192
+ %w(平成26.09.24 平成26.10.02 平成26.10.08 平成26.10.16),
193
+ %w(平成26.10.24 平成26.10.31 平成26.11.07 平成26.11.15),
194
+ %w(平成26.11.22 平成26.11.29 平成26.12.06 平成26.12.14),
195
+ %w(平成26.12.22 平成26.12.29)
196
+ ].each do |month|
197
+ assert_equal([true], month.map {|date| When.when?(date).notes('月相').kind_of?(Hash)}.uniq)
198
+ end
199
+ end
45
200
  =begin
46
201
  def test_japanese_date
47
202
  jc = When.Resource('_c:Japanese')
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
3
+ Copyright (C) 2011-2014 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -53,8 +53,8 @@ module Test
53
53
  date += When.Duration('P1Y')
54
54
  end
55
55
 
56
- assert_equal("BCE3761(-3760).10.07",
57
- (When.era('BCE')[0] ^ When.Calendar('Jewish').domain.first).to_s)
56
+ assert_equal("Common::BCE3761(-3760).10.07",
57
+ (When.era('BCE')[0] ^ When.Calendar('Jewish').domain[''].first).to_s)
58
58
 
59
59
  end
60
60
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2013 Takashi SUGA
3
+ Copyright (C) 2011-2014 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -121,10 +121,10 @@ module Test
121
121
  end
122
122
  end
123
123
 
124
- def test__to_hash
124
+ def test__to_h
125
125
  [
126
126
  ['HLC0.0.0.0.0',
127
- {:calendar=>["_e:Mayan::PHLC",-13], :sdn=>584283, :cal_date=>[13, 0, 0, 0, 0],
127
+ {:calendar=>["_e:LongCount::PHLC",-13], :sdn=>584283, :cal_date=>[13, 0, 0, 0, 0],
128
128
  :notes=>[[{:note=>"Trecena", :value=>"Trecena(4/13)"},
129
129
  {:note=>"Tzolk'in", :value=>"Ajaw(19/20)"},
130
130
  {:note=>"Lords_of_the_Night", :value=>"G9(0/9)"},
@@ -137,9 +137,9 @@ module Test
137
137
  ['明治7.5.7',
138
138
  {:calendar=>["_e:Japanese::明治",1867], :sdn=>2405651, :cal_date=>[7, 5, 7],
139
139
  :notes=>[[{:note=>"干支", :value=>"甲戌(10)", :position=>"共通"}],
140
- [{:note=>"月名", :value=>"May", :position=>"月建"}],
141
- [{:note=>"干支", :value=>"甲子(0)", :position=>"共通"},
142
- {:note=>"六曜", :value=>"赤口", :position=>"民間"}]]}],
140
+ [{:note=>"月名", :value=>"May", :position=>"月建"}],
141
+ [{:note=>"干支", :value=>"甲子(00)", :position=>"共通"},
142
+ {:note=>"六曜", :value=>"赤口", :position=>"民間"}]]}],
143
143
 
144
144
  ['明治17.5.7',
145
145
  {:calendar=>["_e:Japanese::明治",1867], :sdn=>2409304, :cal_date=>[17, 5, 7],
@@ -156,17 +156,17 @@ module Test
156
156
  [11,
157
157
  {:calendar=>["_tm:JulianDate"], :sdn=>11,
158
158
  :notes=>[[{:note=>"Week", :value=>"Friday(4)"},
159
- {:note=>"干支", :value=>"甲子(0)"}]]}],
159
+ {:note=>"干支", :value=>"甲子(00)"}]]}],
160
160
 
161
161
  [11.0,
162
162
  {:calendar=>["_tm:JulianDate"], :sdn=>11,
163
163
  :notes=>[[{:note=>"Week", :value=>"Friday(4)"},
164
- {:note=>"干支", :value=>"甲子(0)"}]],
164
+ {:note=>"干支", :value=>"甲子(00)"}]],
165
165
  :clk_time=>[11, 12, 0, 0]}]
166
166
 
167
167
  ].each do |sample|
168
168
  date, verify = sample
169
- list = When.when?(date).to_hash({:simple=>true})
169
+ list = When.when?(date).to_h({:simple=>true})
170
170
  [:calendar, :cal_date, :sdn, :clk_time].each do |key|
171
171
  assert_equal(verify[key], list[key])
172
172
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  =begin
3
- Copyright (C) 2011-2012 Takashi SUGA
3
+ Copyright (C) 2011-2014 Takashi SUGA
4
4
 
5
5
  You may use and/or modify this file according to the license
6
6
  described in the LICENSE.txt file included in this archive.
@@ -10,10 +10,29 @@ module Test
10
10
 
11
11
  class Mayan < Test::Unit::TestCase
12
12
  def test__mayan_epoch
13
- [['PHLC13.0.0.0.0', 'PHLC13(0000).00.00.00.00', 584283],
14
- ['HLC0.0.0.0.1', 'HLC00.00.00.00.01', 584284],
15
- ['HLC13.0.0.0.0', 'HLC13.00.00.00.00', 2456283],
16
- ['HLC13.0.0.0.1', 'NLC00(0013).00.00.00.01', 2456284]].each do |sample|
13
+ # No offset
14
+ [['PHLC13.0.0.0.0', 'PHLC13(0000).00.00.00.00', 584283],
15
+ ['HLC0.0.0.0.1', 'HLC00.00.00.00.01', 584284],
16
+ ['HLC13.0.0.0.0', 'HLC13.00.00.00.00', 2456283],
17
+ ['HLC13.0.0.0.1', 'NLC00(0013).00.00.00.01', 2456284]].each do |sample|
18
+ date = When.when?(sample.shift)
19
+ assert_equal(sample, [date.to_s, date.to_i])
20
+ end
21
+
22
+ # offset 0B
23
+ [['LongCount?Epoch=0D::PHLC13.0.0.0.0', 'LongCount?Epoch=0D::PHLC13(0000).00.00.00.00', 584283],
24
+ ['LongCount?Epoch=0D::HLC0.0.0.0.1', 'LongCount?Epoch=0D::HLC00.00.00.00.01', 584284],
25
+ ['LongCount?Epoch=0D::HLC13.0.0.0.0', 'LongCount?Epoch=0D::HLC13.00.00.00.00', 2456283],
26
+ ['LongCount?Epoch=0D::HLC13.0.0.0.1', 'LongCount?Epoch=0D::NLC00(0013).00.00.00.01', 2456284]].each do |sample|
27
+ date = When.when?(sample.shift)
28
+ assert_equal(sample, [date.to_s, date.to_i])
29
+ end
30
+
31
+ # offset 2B
32
+ [['LongCount?Epoch=2D::PHLC13.0.0.0.0', 'LongCount?Epoch=2D::PHLC13(0000).00.00.00.00', 584285],
33
+ ['LongCount?Epoch=2D::HLC0.0.0.0.1', 'LongCount?Epoch=2D::HLC00.00.00.00.01', 584286],
34
+ ['LongCount?Epoch=2D::HLC13.0.0.0.0', 'LongCount?Epoch=2D::HLC13.00.00.00.00', 2456285],
35
+ ['LongCount?Epoch=2D::HLC13.0.0.0.1', 'LongCount?Epoch=2D::NLC00(0013).00.00.00.01', 2456286]].each do |sample|
17
36
  date = When.when?(sample.shift)
18
37
  assert_equal(sample, [date.to_s, date.to_i])
19
38
  end
@@ -26,6 +45,7 @@ module Test
26
45
  end
27
46
 
28
47
  def test__haab
48
+ # No offset
29
49
  haab = When.Resource("_co:Mayan::Haab'")
30
50
  assert_equal("ハアブ", haab.label.translate('ja'))
31
51
  assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
@@ -44,9 +64,50 @@ module Test
44
64
  assert_equal(42, When.when?('2011-05-15') % haab)
45
65
  h = haab % When.when?('2011-05-15')
46
66
  assert_equal(["Sip", 2], [h.label.to_s, h.difference])
67
+
68
+ # offset 0B
69
+ haab = When.Resource("_co:Mayan?Epoch=0D::Haab'")
70
+ assert_equal("ハアブ", haab.label.translate('ja'))
71
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
72
+ pop = When.Resource("_co:Mayan?Epoch=0D::Haab'::Pop")
73
+ assert_equal("Pop", pop.label.translate('en'))
74
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
75
+ date0 = When.when?('2011-05-16T12:34:56Z')
76
+ sample = [
77
+ "2012-04-12T12:34:56Z",
78
+ "2012-04-13T12:34:56Z",
79
+ "2012-04-14T12:34:56Z"
80
+ ]
81
+ [10,11,12].each do |i|
82
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
83
+ end
84
+ assert_equal(42, When.when?('2011-05-15') % haab)
85
+ h = haab % When.when?('2011-05-15')
86
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
87
+
88
+ # offset 2B
89
+ haab = When.Resource("_co:Mayan?Epoch=2D::Haab'")
90
+ assert_equal("ハアブ", haab.label.translate('ja'))
91
+ assert_equal("http://en.wikipedia.org/wiki/Haab'", haab.label.reference)
92
+ pop = When.Resource("_co:Mayan?Epoch=2D::Haab'::Pop")
93
+ assert_equal("Pop", pop.label.translate('en'))
94
+ assert_equal("http://en.wikipedia.org/wiki/File:Maya-Pop.jpg", pop.label.reference)
95
+ date0 = When.when?('2011-05-16T12:34:56Z')
96
+ sample = [
97
+ "2012-04-14T12:34:56Z",
98
+ "2012-04-15T12:34:56Z",
99
+ "2012-04-16T12:34:56Z"
100
+ ]
101
+ [10,11,12].each do |i|
102
+ assert_equal(sample.shift, (date0 & pop[i]).to_s)
103
+ end
104
+ assert_equal(42, When.when?('2011-05-17') % haab)
105
+ h = haab % When.when?('2011-05-17')
106
+ assert_equal(["Sip", 2], [h.label.to_s, h.difference])
47
107
  end
48
108
 
49
109
  def test__tzolkin
110
+ # No offset
50
111
  trecena = When.Resource("_co:Mayan::Trecena")
51
112
  assert_equal("トレセナ", trecena.label.translate('ja'))
52
113
  assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
@@ -73,6 +134,62 @@ module Test
73
134
  if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
74
135
  assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
75
136
  end
137
+
138
+ # offset 0B
139
+ trecena = When.Resource("_co:Mayan?Epoch=0D::Trecena")
140
+ assert_equal("トレセナ", trecena.label.translate('ja'))
141
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
142
+ assert_equal(2, When.when?('2011-05-15') % trecena)
143
+
144
+
145
+ tzolkin = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in")
146
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
147
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
148
+ ajaw = When.Resource("_co:Mayan?Epoch=0D::Tzolk'in::Ajaw")
149
+ assert_equal("Ajaw", ajaw.label.translate('en'))
150
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
151
+ date0 = When.when?('2011-05-16T12:34:56Z')
152
+ sample = [
153
+ "2011-05-21T12:34:56Z",
154
+ "2011-05-21T12:34:56Z",
155
+ "2011-05-21T12:34:56Z"
156
+ ]
157
+ [10,11,12].each do |i|
158
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
159
+ end
160
+ assert_equal(13, When.when?('2011-05-15') % tzolkin)
161
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-15')).label.to_s)
162
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
163
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,15)).label.to_s)
164
+ end
165
+
166
+ # offset 2B
167
+ trecena = When.Resource("_co:Mayan?Epoch=2D::Trecena")
168
+ assert_equal("トレセナ", trecena.label.translate('ja'))
169
+ assert_equal("http://en.wikipedia.org/wiki/Trecena", trecena.label.reference)
170
+ assert_equal(2, When.when?('2011-05-17') % trecena)
171
+
172
+
173
+ tzolkin = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in")
174
+ assert_equal("ツォルキン", tzolkin.label.translate('ja'))
175
+ assert_equal("http://en.wikipedia.org/wiki/Tzolk'in", tzolkin.label.reference)
176
+ ajaw = When.Resource("_co:Mayan?Epoch=2D::Tzolk'in::Ajaw")
177
+ assert_equal("Ajaw", ajaw.label.translate('en'))
178
+ assert_equal("http://en.wikipedia.org/wiki/File:MAYA-g-log-cal-D20-Ajaw-cdxW.png", ajaw.label.reference('alias'))
179
+ date0 = When.when?('2011-05-16T12:34:56Z')
180
+ sample = [
181
+ "2011-05-23T12:34:56Z",
182
+ "2011-05-23T12:34:56Z",
183
+ "2011-05-23T12:34:56Z"
184
+ ]
185
+ [10,11,12].each do |i|
186
+ assert_equal(sample.shift, (date0 & ajaw).to_s)
187
+ end
188
+ assert_equal(13, When.when?('2011-05-17') % tzolkin)
189
+ assert_equal('Ix', (tzolkin % When.when?('2011-05-17')).label.to_s)
190
+ if ::Object.const_defined?(:Date) && Date.respond_to?(:civil)
191
+ assert_equal('Ix', (tzolkin % Date.new(2011,5,17)).label.to_s)
192
+ end
76
193
  end
77
194
  end
78
195
  end