wareki 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,502 @@
1
+ # coding: utf-8
2
+ module Wareki
3
+ Era = Struct.new(:name, :year, :start, :end)
4
+ ERA_DEFS = [
5
+ Era.new("大化", 645, 1956842, 1958551),
6
+ Era.new("白雉", 650, 1958551, 1960259),
7
+ Era.new("朱鳥", 686, 1971845, 1971893),
8
+ Era.new("大宝", 701, 1977221, 1978361),
9
+ Era.new("慶雲", 704, 1978361, 1979692),
10
+ Era.new("和銅", 708, 1979692, 1982487),
11
+ Era.new("霊亀", 715, 1982487, 1983300),
12
+ Era.new("養老", 717, 1983300, 1985561),
13
+ Era.new("神亀", 724, 1985561, 1987570),
14
+ Era.new("天平", 729, 1987570, 1994754),
15
+ Era.new("天平感宝", 749, 1994754, 1994861),
16
+ Era.new("天平勝宝", 749, 1994861, 1997801),
17
+ Era.new("天平宝字", 757, 1997801, 2000506),
18
+ Era.new("天平神護", 765, 2000506, 2001460),
19
+ Era.new("神護景雲", 767, 2001460, 2002596),
20
+ Era.new("宝亀", 770, 2002596, 2006348),
21
+ Era.new("天応", 781, 2006348, 2006956),
22
+ Era.new("延暦", 782, 2006956, 2015608),
23
+ Era.new("大同", 806, 2015608, 2017203),
24
+ Era.new("弘仁", 810, 2017203, 2022062),
25
+ Era.new("天長", 824, 2022062, 2025721),
26
+ Era.new("承和", 834, 2025721, 2030987),
27
+ Era.new("嘉祥", 848, 2030987, 2032037),
28
+ Era.new("仁寿", 851, 2032037, 2033338),
29
+ Era.new("斉衡", 854, 2033338, 2034156),
30
+ Era.new("天安", 857, 2034156, 2034947),
31
+ Era.new("貞観", 859, 2034947, 2041534),
32
+ Era.new("元慶", 877, 2041534, 2044374),
33
+ Era.new("仁和", 885, 2044374, 2045915),
34
+ Era.new("寛平", 889, 2045915, 2049192),
35
+ Era.new("昌泰", 898, 2049192, 2050391),
36
+ Era.new("延喜", 901, 2050391, 2058332),
37
+ Era.new("延長", 923, 2058332, 2061241),
38
+ Era.new("承平", 931, 2061241, 2063835),
39
+ Era.new("天慶", 938, 2063835, 2067084),
40
+ Era.new("天暦", 947, 2067084, 2070927),
41
+ Era.new("天徳", 957, 2070927, 2072127),
42
+ Era.new("応和", 961, 2072127, 2073390),
43
+ Era.new("康保", 964, 2073390, 2074871),
44
+ Era.new("安和", 968, 2074871, 2075473),
45
+ Era.new("天禄", 970, 2075473, 2076827),
46
+ Era.new("天延", 973, 2076827, 2077765),
47
+ Era.new("貞元", 976, 2077765, 2078637),
48
+ Era.new("天元", 978, 2078637, 2080247),
49
+ Era.new("永観", 983, 2080247, 2080968),
50
+ Era.new("寛和", 985, 2080968, 2081684),
51
+ Era.new("永延", 987, 2081684, 2082543),
52
+ Era.new("永祚", 989, 2082543, 2082985),
53
+ Era.new("正暦", 990, 2082985, 2084565),
54
+ Era.new("長徳", 995, 2084565, 2085974),
55
+ Era.new("長保", 999, 2085974, 2087989),
56
+ Era.new("寛弘", 1004, 2087989, 2091095),
57
+ Era.new("長和", 1012, 2091095, 2092658),
58
+ Era.new("寛仁", 1017, 2092658, 2094054),
59
+ Era.new("治安", 1021, 2094054, 2095305),
60
+ Era.new("万寿", 1024, 2095305, 2096765),
61
+ Era.new("長元", 1028, 2096765, 2099951),
62
+ Era.new("長暦", 1037, 2099951, 2101268),
63
+ Era.new("長久", 1040, 2101268, 2102729),
64
+ Era.new("寛徳", 1044, 2102729, 2103251),
65
+ Era.new("永承", 1046, 2103251, 2105699),
66
+ Era.new("天喜", 1053, 2105699, 2107754),
67
+ Era.new("康平", 1058, 2107754, 2110296),
68
+ Era.new("治暦", 1065, 2110296, 2111636),
69
+ Era.new("延久", 1069, 2111636, 2113595),
70
+ Era.new("承保", 1074, 2113595, 2114771),
71
+ Era.new("承暦", 1077, 2114771, 2115974),
72
+ Era.new("永保", 1081, 2115974, 2117063),
73
+ Era.new("応徳", 1084, 2117063, 2118215),
74
+ Era.new("寛治", 1087, 2118215, 2121029),
75
+ Era.new("嘉保", 1094, 2121029, 2121740),
76
+ Era.new("永長", 1096, 2121740, 2122098),
77
+ Era.new("承徳", 1097, 2122098, 2122725),
78
+ Era.new("康和", 1099, 2122725, 2124361),
79
+ Era.new("長治", 1104, 2124361, 2125157),
80
+ Era.new("嘉承", 1106, 2125157, 2126007),
81
+ Era.new("天仁", 1108, 2126007, 2126697),
82
+ Era.new("天永", 1110, 2126697, 2127818),
83
+ Era.new("永久", 1113, 2127818, 2129522),
84
+ Era.new("元永", 1118, 2129522, 2130267),
85
+ Era.new("保安", 1120, 2130267, 2131737),
86
+ Era.new("天治", 1124, 2131737, 2132375),
87
+ Era.new("大治", 1126, 2132375, 2134214),
88
+ Era.new("天承", 1131, 2134214, 2134785),
89
+ Era.new("長承", 1132, 2134785, 2135777),
90
+ Era.new("保延", 1135, 2135777, 2138033),
91
+ Era.new("永治", 1141, 2138033, 2138318),
92
+ Era.new("康治", 1142, 2138318, 2138991),
93
+ Era.new("天養", 1144, 2138991, 2139493),
94
+ Era.new("久安", 1145, 2139493, 2141505),
95
+ Era.new("仁平", 1151, 2141505, 2142894),
96
+ Era.new("久寿", 1154, 2142894, 2143425),
97
+ Era.new("保元", 1156, 2143425, 2144511),
98
+ Era.new("平治", 1159, 2144511, 2144796),
99
+ Era.new("永暦", 1160, 2144796, 2145380),
100
+ Era.new("応保", 1161, 2145380, 2145967),
101
+ Era.new("長寛", 1163, 2145967, 2146769),
102
+ Era.new("永万", 1165, 2146769, 2147205),
103
+ Era.new("仁安", 1166, 2147205, 2148161),
104
+ Era.new("嘉応", 1169, 2148161, 2148912),
105
+ Era.new("承安", 1171, 2148912, 2150454),
106
+ Era.new("安元", 1175, 2150454, 2151198),
107
+ Era.new("治承", 1177, 2151198, 2152655),
108
+ Era.new("養和", 1181, 2152655, 2152963),
109
+ Era.new("寿永", 1182, 2152963, 2153661),
110
+ Era.new("元暦", 1184, 2153661, 2154131),
111
+ Era.new("文治", 1185, 2154131, 2155841),
112
+ Era.new("建久", 1190, 2155841, 2159135),
113
+ Era.new("正治", 1199, 2159135, 2159801),
114
+ Era.new("建仁", 1201, 2159801, 2160901),
115
+ Era.new("元久", 1204, 2160901, 2161705),
116
+ Era.new("建永", 1206, 2161705, 2162234),
117
+ Era.new("承元", 1207, 2162234, 2163488),
118
+ Era.new("建暦", 1211, 2163488, 2164489),
119
+ Era.new("建保", 1213, 2164489, 2166444),
120
+ Era.new("承久", 1219, 2166444, 2167538),
121
+ Era.new("貞応", 1222, 2167538, 2168489),
122
+ Era.new("元仁", 1224, 2168489, 2168637),
123
+ Era.new("嘉禄", 1225, 2168637, 2169602),
124
+ Era.new("安貞", 1227, 2169602, 2170040),
125
+ Era.new("寛喜", 1229, 2170040, 2171159),
126
+ Era.new("貞永", 1232, 2171159, 2171556),
127
+ Era.new("天福", 1233, 2171556, 2172107),
128
+ Era.new("文暦", 1234, 2172107, 2172446),
129
+ Era.new("嘉禎", 1235, 2172446, 2173601),
130
+ Era.new("暦仁", 1238, 2173601, 2173674),
131
+ Era.new("延応", 1239, 2173674, 2174185),
132
+ Era.new("仁治", 1240, 2174185, 2175140),
133
+ Era.new("寛元", 1243, 2175140, 2176619),
134
+ Era.new("宝治", 1247, 2176619, 2177377),
135
+ Era.new("建長", 1249, 2177377, 2180109),
136
+ Era.new("康元", 1256, 2180109, 2180267),
137
+ Era.new("正嘉", 1257, 2180267, 2181017),
138
+ Era.new("正元", 1259, 2181017, 2181417),
139
+ Era.new("文応", 1260, 2181417, 2181719),
140
+ Era.new("弘長", 1261, 2181719, 2182820),
141
+ Era.new("文永", 1264, 2182820, 2186893),
142
+ Era.new("建治", 1275, 2186893, 2187929),
143
+ Era.new("弘安", 1278, 2187929, 2191649),
144
+ Era.new("正応", 1288, 2191649, 2193575),
145
+ Era.new("永仁", 1293, 2193575, 2195662),
146
+ Era.new("正安", 1299, 2195662, 2196957),
147
+ Era.new("乾元", 1302, 2196957, 2197237),
148
+ Era.new("嘉元", 1303, 2197237, 2198457),
149
+ Era.new("徳治", 1306, 2198457, 2199131),
150
+ Era.new("延慶", 1308, 2199131, 2200037),
151
+ Era.new("応長", 1311, 2200037, 2200383),
152
+ Era.new("正和", 1312, 2200383, 2202167),
153
+ Era.new("文保", 1317, 2202167, 2202960),
154
+ Era.new("元応", 1319, 2202960, 2203634),
155
+ Era.new("元亨", 1321, 2203634, 2205008),
156
+ Era.new("正中", 1324, 2205008, 2205527),
157
+ Era.new("嘉暦", 1326, 2205527, 2206740),
158
+ Era.new("元徳", 1329, 2206740, 2207459),
159
+ Era.new("元弘", 1331, 2207459, 2208365),
160
+ Era.new("正慶", 1332, 2207714, 2208124),
161
+ Era.new("建武", 1334, 2208365, 2209133),
162
+ Era.new("延元", 1336, 2209133, 2210638),
163
+ Era.new("興国", 1340, 2210638, 2213069),
164
+ Era.new("正平", 1346, 2213069, 2221678),
165
+ Era.new("建徳", 1370, 2221678, 2222302),
166
+ Era.new("文中", 1372, 2222302, 2223453),
167
+ Era.new("天授", 1375, 2223453, 2225533),
168
+ Era.new("弘和", 1381, 2225533, 2226702),
169
+ Era.new("元中", 1384, 2226702, 2229809),
170
+ Era.new("暦応", 1338, 2210046, 2211375),
171
+ Era.new("康永", 1342, 2211375, 2212638),
172
+ Era.new("貞和", 1345, 2212638, 2214239),
173
+ Era.new("観応", 1350, 2214239, 2215184),
174
+ Era.new("文和", 1352, 2215184, 2216456),
175
+ Era.new("延文", 1356, 2216456, 2218287),
176
+ Era.new("康安", 1361, 2218287, 2218812),
177
+ Era.new("貞治", 1362, 2218812, 2220786),
178
+ Era.new("応安", 1368, 2220786, 2223364),
179
+ Era.new("永和", 1375, 2223364, 2224836),
180
+ Era.new("康暦", 1379, 2224836, 2225547),
181
+ Era.new("永徳", 1381, 2225547, 2226642),
182
+ Era.new("至徳", 1384, 2226642, 2227937),
183
+ Era.new("嘉慶", 1387, 2227937, 2228456),
184
+ Era.new("康応", 1389, 2228456, 2228857),
185
+ Era.new("明徳", 1390, 2228857, 2230430),
186
+ Era.new("応永", 1394, 2230430, 2242796),
187
+ Era.new("正長", 1428, 2242796, 2243276),
188
+ Era.new("永享", 1429, 2243276, 2247452),
189
+ Era.new("嘉吉", 1441, 2247452, 2248532),
190
+ Era.new("文安", 1444, 2248532, 2250533),
191
+ Era.new("宝徳", 1449, 2250533, 2251623),
192
+ Era.new("享徳", 1452, 2251623, 2252745),
193
+ Era.new("康正", 1455, 2252745, 2253516),
194
+ Era.new("長禄", 1457, 2253516, 2254720),
195
+ Era.new("寛正", 1460, 2254720, 2256587),
196
+ Era.new("文正", 1466, 2256587, 2256978),
197
+ Era.new("応仁", 1467, 2256978, 2257769),
198
+ Era.new("文明", 1469, 2257769, 2264405),
199
+ Era.new("長享", 1487, 2264405, 2265174),
200
+ Era.new("延徳", 1489, 2265174, 2266235),
201
+ Era.new("明応", 1492, 2266235, 2269375),
202
+ Era.new("文亀", 1501, 2269375, 2270469),
203
+ Era.new("永正", 1504, 2270469, 2276869),
204
+ Era.new("大永", 1521, 2276869, 2279406),
205
+ Era.new("享禄", 1528, 2279406, 2280862),
206
+ Era.new("天文", 1532, 2280862, 2289332),
207
+ Era.new("弘治", 1555, 2289332, 2290194),
208
+ Era.new("永禄", 1558, 2290194, 2294647),
209
+ Era.new("元亀", 1570, 2294647, 2295833),
210
+ Era.new("天正", 1573, 2295833, 2302901),
211
+ Era.new("文禄", 1592, 2302901, 2304337),
212
+ Era.new("慶長", 1596, 2304337, 2311174),
213
+ Era.new("元和", 1615, 2311174, 2314321),
214
+ Era.new("寛永", 1624, 2314321, 2321897),
215
+ Era.new("正保", 1644, 2321897, 2323077),
216
+ Era.new("慶安", 1648, 2323077, 2324734),
217
+ Era.new("承応", 1652, 2324734, 2325674),
218
+ Era.new("明暦", 1655, 2325674, 2326865),
219
+ Era.new("万治", 1658, 2326865, 2327871),
220
+ Era.new("寛文", 1661, 2327871, 2332414),
221
+ Era.new("延宝", 1673, 2332414, 2335346),
222
+ Era.new("天和", 1681, 2335346, 2336224),
223
+ Era.new("貞享", 1684, 2336224, 2337886),
224
+ Era.new("元禄", 1688, 2337886, 2343539),
225
+ Era.new("宝永", 1704, 2343539, 2346151),
226
+ Era.new("正徳", 1711, 2346151, 2348037),
227
+ Era.new("享保", 1716, 2348037, 2355279),
228
+ Era.new("元文", 1736, 2355279, 2357049),
229
+ Era.new("寛保", 1741, 2357049, 2358136),
230
+ Era.new("延享", 1744, 2358136, 2359721),
231
+ Era.new("寛延", 1748, 2359721, 2360947),
232
+ Era.new("宝暦", 1751, 2360947, 2365529),
233
+ Era.new("明和", 1764, 2365529, 2368614),
234
+ Era.new("安永", 1772, 2368614, 2371672),
235
+ Era.new("天明", 1781, 2371672, 2374529),
236
+ Era.new("寛政", 1789, 2374529, 2378939),
237
+ Era.new("享和", 1801, 2378939, 2380038),
238
+ Era.new("文化", 1804, 2380038, 2385216),
239
+ Era.new("文政", 1818, 2385216, 2389841),
240
+ Era.new("天保", 1830, 2389841, 2394941),
241
+ Era.new("弘化", 1844, 2394941, 2396119),
242
+ Era.new("嘉永", 1848, 2396119, 2398599),
243
+ Era.new("安政", 1854, 2398599, 2400509),
244
+ Era.new("万延", 1860, 2400509, 2400864),
245
+ Era.new("文久", 1861, 2400864, 2401958),
246
+ Era.new("元治", 1864, 2401958, 2402358),
247
+ Era.new("慶応", 1865, 2402358, 2403629),
248
+ Era.new("明治", 1868, 2403357, 2419613),
249
+ Era.new("大正", 1912, 2419614, 2424874),
250
+ Era.new("昭和", 1926, 2424875, 2447534),
251
+ Era.new("平成", 1989, 2447535, 1684383730585466947585),
252
+ ].freeze
253
+ ERA_NORTH_DEFS = [
254
+ Era.new("大化", 645, 1956842, 1958551),
255
+ Era.new("白雉", 650, 1958551, 1960259),
256
+ Era.new("朱鳥", 686, 1971845, 1971893),
257
+ Era.new("大宝", 701, 1977221, 1978361),
258
+ Era.new("慶雲", 704, 1978361, 1979692),
259
+ Era.new("和銅", 708, 1979692, 1982487),
260
+ Era.new("霊亀", 715, 1982487, 1983300),
261
+ Era.new("養老", 717, 1983300, 1985561),
262
+ Era.new("神亀", 724, 1985561, 1987570),
263
+ Era.new("天平", 729, 1987570, 1994754),
264
+ Era.new("天平感宝", 749, 1994754, 1994861),
265
+ Era.new("天平勝宝", 749, 1994861, 1997801),
266
+ Era.new("天平宝字", 757, 1997801, 2000506),
267
+ Era.new("天平神護", 765, 2000506, 2001460),
268
+ Era.new("神護景雲", 767, 2001460, 2002596),
269
+ Era.new("宝亀", 770, 2002596, 2006348),
270
+ Era.new("天応", 781, 2006348, 2006956),
271
+ Era.new("延暦", 782, 2006956, 2015608),
272
+ Era.new("大同", 806, 2015608, 2017203),
273
+ Era.new("弘仁", 810, 2017203, 2022062),
274
+ Era.new("天長", 824, 2022062, 2025721),
275
+ Era.new("承和", 834, 2025721, 2030987),
276
+ Era.new("嘉祥", 848, 2030987, 2032037),
277
+ Era.new("仁寿", 851, 2032037, 2033338),
278
+ Era.new("斉衡", 854, 2033338, 2034156),
279
+ Era.new("天安", 857, 2034156, 2034947),
280
+ Era.new("貞観", 859, 2034947, 2041534),
281
+ Era.new("元慶", 877, 2041534, 2044374),
282
+ Era.new("仁和", 885, 2044374, 2045915),
283
+ Era.new("寛平", 889, 2045915, 2049192),
284
+ Era.new("昌泰", 898, 2049192, 2050391),
285
+ Era.new("延喜", 901, 2050391, 2058332),
286
+ Era.new("延長", 923, 2058332, 2061241),
287
+ Era.new("承平", 931, 2061241, 2063835),
288
+ Era.new("天慶", 938, 2063835, 2067084),
289
+ Era.new("天暦", 947, 2067084, 2070927),
290
+ Era.new("天徳", 957, 2070927, 2072127),
291
+ Era.new("応和", 961, 2072127, 2073390),
292
+ Era.new("康保", 964, 2073390, 2074871),
293
+ Era.new("安和", 968, 2074871, 2075473),
294
+ Era.new("天禄", 970, 2075473, 2076827),
295
+ Era.new("天延", 973, 2076827, 2077765),
296
+ Era.new("貞元", 976, 2077765, 2078637),
297
+ Era.new("天元", 978, 2078637, 2080247),
298
+ Era.new("永観", 983, 2080247, 2080968),
299
+ Era.new("寛和", 985, 2080968, 2081684),
300
+ Era.new("永延", 987, 2081684, 2082543),
301
+ Era.new("永祚", 989, 2082543, 2082985),
302
+ Era.new("正暦", 990, 2082985, 2084565),
303
+ Era.new("長徳", 995, 2084565, 2085974),
304
+ Era.new("長保", 999, 2085974, 2087989),
305
+ Era.new("寛弘", 1004, 2087989, 2091095),
306
+ Era.new("長和", 1012, 2091095, 2092658),
307
+ Era.new("寛仁", 1017, 2092658, 2094054),
308
+ Era.new("治安", 1021, 2094054, 2095305),
309
+ Era.new("万寿", 1024, 2095305, 2096765),
310
+ Era.new("長元", 1028, 2096765, 2099951),
311
+ Era.new("長暦", 1037, 2099951, 2101268),
312
+ Era.new("長久", 1040, 2101268, 2102729),
313
+ Era.new("寛徳", 1044, 2102729, 2103251),
314
+ Era.new("永承", 1046, 2103251, 2105699),
315
+ Era.new("天喜", 1053, 2105699, 2107754),
316
+ Era.new("康平", 1058, 2107754, 2110296),
317
+ Era.new("治暦", 1065, 2110296, 2111636),
318
+ Era.new("延久", 1069, 2111636, 2113595),
319
+ Era.new("承保", 1074, 2113595, 2114771),
320
+ Era.new("承暦", 1077, 2114771, 2115974),
321
+ Era.new("永保", 1081, 2115974, 2117063),
322
+ Era.new("応徳", 1084, 2117063, 2118215),
323
+ Era.new("寛治", 1087, 2118215, 2121029),
324
+ Era.new("嘉保", 1094, 2121029, 2121740),
325
+ Era.new("永長", 1096, 2121740, 2122098),
326
+ Era.new("承徳", 1097, 2122098, 2122725),
327
+ Era.new("康和", 1099, 2122725, 2124361),
328
+ Era.new("長治", 1104, 2124361, 2125157),
329
+ Era.new("嘉承", 1106, 2125157, 2126007),
330
+ Era.new("天仁", 1108, 2126007, 2126697),
331
+ Era.new("天永", 1110, 2126697, 2127818),
332
+ Era.new("永久", 1113, 2127818, 2129522),
333
+ Era.new("元永", 1118, 2129522, 2130267),
334
+ Era.new("保安", 1120, 2130267, 2131737),
335
+ Era.new("天治", 1124, 2131737, 2132375),
336
+ Era.new("大治", 1126, 2132375, 2134214),
337
+ Era.new("天承", 1131, 2134214, 2134785),
338
+ Era.new("長承", 1132, 2134785, 2135777),
339
+ Era.new("保延", 1135, 2135777, 2138033),
340
+ Era.new("永治", 1141, 2138033, 2138318),
341
+ Era.new("康治", 1142, 2138318, 2138991),
342
+ Era.new("天養", 1144, 2138991, 2139493),
343
+ Era.new("久安", 1145, 2139493, 2141505),
344
+ Era.new("仁平", 1151, 2141505, 2142894),
345
+ Era.new("久寿", 1154, 2142894, 2143425),
346
+ Era.new("保元", 1156, 2143425, 2144511),
347
+ Era.new("平治", 1159, 2144511, 2144796),
348
+ Era.new("永暦", 1160, 2144796, 2145380),
349
+ Era.new("応保", 1161, 2145380, 2145967),
350
+ Era.new("長寛", 1163, 2145967, 2146769),
351
+ Era.new("永万", 1165, 2146769, 2147205),
352
+ Era.new("仁安", 1166, 2147205, 2148161),
353
+ Era.new("嘉応", 1169, 2148161, 2148912),
354
+ Era.new("承安", 1171, 2148912, 2150454),
355
+ Era.new("安元", 1175, 2150454, 2151198),
356
+ Era.new("治承", 1177, 2151198, 2152655),
357
+ Era.new("養和", 1181, 2152655, 2152963),
358
+ Era.new("寿永", 1182, 2152963, 2153661),
359
+ Era.new("元暦", 1184, 2153661, 2154131),
360
+ Era.new("文治", 1185, 2154131, 2155841),
361
+ Era.new("建久", 1190, 2155841, 2159135),
362
+ Era.new("正治", 1199, 2159135, 2159801),
363
+ Era.new("建仁", 1201, 2159801, 2160901),
364
+ Era.new("元久", 1204, 2160901, 2161705),
365
+ Era.new("建永", 1206, 2161705, 2162234),
366
+ Era.new("承元", 1207, 2162234, 2163488),
367
+ Era.new("建暦", 1211, 2163488, 2164489),
368
+ Era.new("建保", 1213, 2164489, 2166444),
369
+ Era.new("承久", 1219, 2166444, 2167538),
370
+ Era.new("貞応", 1222, 2167538, 2168489),
371
+ Era.new("元仁", 1224, 2168489, 2168637),
372
+ Era.new("嘉禄", 1225, 2168637, 2169602),
373
+ Era.new("安貞", 1227, 2169602, 2170040),
374
+ Era.new("寛喜", 1229, 2170040, 2171159),
375
+ Era.new("貞永", 1232, 2171159, 2171556),
376
+ Era.new("天福", 1233, 2171556, 2172107),
377
+ Era.new("文暦", 1234, 2172107, 2172446),
378
+ Era.new("嘉禎", 1235, 2172446, 2173601),
379
+ Era.new("暦仁", 1238, 2173601, 2173674),
380
+ Era.new("延応", 1239, 2173674, 2174185),
381
+ Era.new("仁治", 1240, 2174185, 2175140),
382
+ Era.new("寛元", 1243, 2175140, 2176619),
383
+ Era.new("宝治", 1247, 2176619, 2177377),
384
+ Era.new("建長", 1249, 2177377, 2180109),
385
+ Era.new("康元", 1256, 2180109, 2180267),
386
+ Era.new("正嘉", 1257, 2180267, 2181017),
387
+ Era.new("正元", 1259, 2181017, 2181417),
388
+ Era.new("文応", 1260, 2181417, 2181719),
389
+ Era.new("弘長", 1261, 2181719, 2182820),
390
+ Era.new("文永", 1264, 2182820, 2186893),
391
+ Era.new("建治", 1275, 2186893, 2187929),
392
+ Era.new("弘安", 1278, 2187929, 2191649),
393
+ Era.new("正応", 1288, 2191649, 2193575),
394
+ Era.new("永仁", 1293, 2193575, 2195662),
395
+ Era.new("正安", 1299, 2195662, 2196957),
396
+ Era.new("乾元", 1302, 2196957, 2197237),
397
+ Era.new("嘉元", 1303, 2197237, 2198457),
398
+ Era.new("徳治", 1306, 2198457, 2199131),
399
+ Era.new("延慶", 1308, 2199131, 2200037),
400
+ Era.new("応長", 1311, 2200037, 2200383),
401
+ Era.new("正和", 1312, 2200383, 2202167),
402
+ Era.new("文保", 1317, 2202167, 2202960),
403
+ Era.new("元応", 1319, 2202960, 2203634),
404
+ Era.new("元亨", 1321, 2203634, 2205008),
405
+ Era.new("正中", 1324, 2205008, 2205527),
406
+ Era.new("嘉暦", 1326, 2205527, 2206740),
407
+ Era.new("元徳", 1329, 2206740, 2207459),
408
+ Era.new("元弘", 1331, 2207459, 2208365),
409
+ Era.new("正慶", 1332, 2207714, 2208124),
410
+ Era.new("建武", 1334, 2208365, 2210046),
411
+ Era.new("延元", 1336, 2209133, 2210638),
412
+ Era.new("興国", 1340, 2210638, 2213069),
413
+ Era.new("正平", 1346, 2213069, 2221678),
414
+ Era.new("建徳", 1370, 2221678, 2222302),
415
+ Era.new("文中", 1372, 2222302, 2223453),
416
+ Era.new("天授", 1375, 2223453, 2225533),
417
+ Era.new("弘和", 1381, 2225533, 2226702),
418
+ Era.new("元中", 1384, 2226702, 2229809),
419
+ Era.new("暦応", 1338, 2210046, 2211375),
420
+ Era.new("康永", 1342, 2211375, 2212638),
421
+ Era.new("貞和", 1345, 2212638, 2214239),
422
+ Era.new("観応", 1350, 2214239, 2215184),
423
+ Era.new("文和", 1352, 2215184, 2216456),
424
+ Era.new("延文", 1356, 2216456, 2218287),
425
+ Era.new("康安", 1361, 2218287, 2218812),
426
+ Era.new("貞治", 1362, 2218812, 2220786),
427
+ Era.new("応安", 1368, 2220786, 2223364),
428
+ Era.new("永和", 1375, 2223364, 2224836),
429
+ Era.new("康暦", 1379, 2224836, 2225547),
430
+ Era.new("永徳", 1381, 2225547, 2226642),
431
+ Era.new("至徳", 1384, 2226642, 2227937),
432
+ Era.new("嘉慶", 1387, 2227937, 2228456),
433
+ Era.new("康応", 1389, 2228456, 2228857),
434
+ Era.new("明徳", 1390, 2228857, 2230430),
435
+ Era.new("応永", 1394, 2230430, 2242796),
436
+ Era.new("正長", 1428, 2242796, 2243276),
437
+ Era.new("永享", 1429, 2243276, 2247452),
438
+ Era.new("嘉吉", 1441, 2247452, 2248532),
439
+ Era.new("文安", 1444, 2248532, 2250533),
440
+ Era.new("宝徳", 1449, 2250533, 2251623),
441
+ Era.new("享徳", 1452, 2251623, 2252745),
442
+ Era.new("康正", 1455, 2252745, 2253516),
443
+ Era.new("長禄", 1457, 2253516, 2254720),
444
+ Era.new("寛正", 1460, 2254720, 2256587),
445
+ Era.new("文正", 1466, 2256587, 2256978),
446
+ Era.new("応仁", 1467, 2256978, 2257769),
447
+ Era.new("文明", 1469, 2257769, 2264405),
448
+ Era.new("長享", 1487, 2264405, 2265174),
449
+ Era.new("延徳", 1489, 2265174, 2266235),
450
+ Era.new("明応", 1492, 2266235, 2269375),
451
+ Era.new("文亀", 1501, 2269375, 2270469),
452
+ Era.new("永正", 1504, 2270469, 2276869),
453
+ Era.new("大永", 1521, 2276869, 2279406),
454
+ Era.new("享禄", 1528, 2279406, 2280862),
455
+ Era.new("天文", 1532, 2280862, 2289332),
456
+ Era.new("弘治", 1555, 2289332, 2290194),
457
+ Era.new("永禄", 1558, 2290194, 2294647),
458
+ Era.new("元亀", 1570, 2294647, 2295833),
459
+ Era.new("天正", 1573, 2295833, 2302901),
460
+ Era.new("文禄", 1592, 2302901, 2304337),
461
+ Era.new("慶長", 1596, 2304337, 2311174),
462
+ Era.new("元和", 1615, 2311174, 2314321),
463
+ Era.new("寛永", 1624, 2314321, 2321897),
464
+ Era.new("正保", 1644, 2321897, 2323077),
465
+ Era.new("慶安", 1648, 2323077, 2324734),
466
+ Era.new("承応", 1652, 2324734, 2325674),
467
+ Era.new("明暦", 1655, 2325674, 2326865),
468
+ Era.new("万治", 1658, 2326865, 2327871),
469
+ Era.new("寛文", 1661, 2327871, 2332414),
470
+ Era.new("延宝", 1673, 2332414, 2335346),
471
+ Era.new("天和", 1681, 2335346, 2336224),
472
+ Era.new("貞享", 1684, 2336224, 2337886),
473
+ Era.new("元禄", 1688, 2337886, 2343539),
474
+ Era.new("宝永", 1704, 2343539, 2346151),
475
+ Era.new("正徳", 1711, 2346151, 2348037),
476
+ Era.new("享保", 1716, 2348037, 2355279),
477
+ Era.new("元文", 1736, 2355279, 2357049),
478
+ Era.new("寛保", 1741, 2357049, 2358136),
479
+ Era.new("延享", 1744, 2358136, 2359721),
480
+ Era.new("寛延", 1748, 2359721, 2360947),
481
+ Era.new("宝暦", 1751, 2360947, 2365529),
482
+ Era.new("明和", 1764, 2365529, 2368614),
483
+ Era.new("安永", 1772, 2368614, 2371672),
484
+ Era.new("天明", 1781, 2371672, 2374529),
485
+ Era.new("寛政", 1789, 2374529, 2378939),
486
+ Era.new("享和", 1801, 2378939, 2380038),
487
+ Era.new("文化", 1804, 2380038, 2385216),
488
+ Era.new("文政", 1818, 2385216, 2389841),
489
+ Era.new("天保", 1830, 2389841, 2394941),
490
+ Era.new("弘化", 1844, 2394941, 2396119),
491
+ Era.new("嘉永", 1848, 2396119, 2398599),
492
+ Era.new("安政", 1854, 2398599, 2400509),
493
+ Era.new("万延", 1860, 2400509, 2400864),
494
+ Era.new("文久", 1861, 2400864, 2401958),
495
+ Era.new("元治", 1864, 2401958, 2402358),
496
+ Era.new("慶応", 1865, 2402358, 2403629),
497
+ Era.new("明治", 1868, 2403357, 2419613),
498
+ Era.new("大正", 1912, 2419614, 2424874),
499
+ Era.new("昭和", 1926, 2424875, 2447534),
500
+ Era.new("平成", 1989, 2447535, 1684383730585466947585),
501
+ ].freeze
502
+ end
@@ -0,0 +1,173 @@
1
+ module Wareki
2
+ module Utils
3
+ module_function
4
+ def kan_to_i(str)
5
+ ret = 0
6
+ curnum = nil
7
+ str == "零" and return 0
8
+ str.to_s.each_char do |c|
9
+ case c
10
+ when *%w(正 元 朔 一 二 三 四 五 六 七 八 九 肆 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9)
11
+ if curnum
12
+ curnum *= 10
13
+ else
14
+ curnum = 0
15
+ end
16
+ curnum += c.tr("一二三四五六七八九123456789肆元朔正", "1234567891234567894111").to_i
17
+ when "〇", "0", "0"
18
+ curnum and curnum *= 10
19
+ when "卄", "廿"
20
+ ret += 20
21
+ curnum = nil
22
+ when "卅", "丗"
23
+ ret += 30
24
+ curnum = nil
25
+ when "卌"
26
+ ret += 40
27
+ curnum = nil
28
+ when "皕"
29
+ ret += 200
30
+ curnum = nil
31
+ when "十", "百", "千", "万", "億", "兆"
32
+ if curnum
33
+ ret += curnum * 10 ** (["十", "百", "千", "万", "億", "兆"].index(c)+1)
34
+ else
35
+ ret += 10 ** (["十", "百", "千", "万", "億", "兆"].index(c)+1)
36
+ end
37
+ curnum = nil
38
+ end
39
+ end
40
+ if curnum
41
+ ret += curnum
42
+ curnum = nil
43
+ end
44
+ ret
45
+ end
46
+
47
+ def i_to_kan(num, opts = {})
48
+ ret = ''
49
+ {
50
+ '京' => 10000000000000000,
51
+ '兆' => 1000000000000,
52
+ '億' => 100000000,
53
+ '万' => 10000,
54
+ '' => 1,
55
+ }.each do |unit4, rank4|
56
+ i4 = (num / rank4).to_i % 10000
57
+ if i4 == 0
58
+ next
59
+ elsif i4 == 1
60
+ ret += "一#{unit4}"
61
+ next
62
+ end
63
+ {
64
+ '千' => 1000,
65
+ '百' => 100,
66
+ '十' => 10,
67
+ '' => 1,
68
+ }.each do |unit1, rank1|
69
+ i1 = (i4 / rank1).to_i % 10
70
+ if i1 == 0
71
+ next
72
+ elsif i1 == 1 && unit1 != ""
73
+ ret += unit1
74
+ else
75
+ ret += i1.to_s.tr('123456789', '一二三四五六七八九') + unit1
76
+ end
77
+ end
78
+ ret += unit4
79
+ end
80
+ ret
81
+ end
82
+
83
+ def i_to_zen(num)
84
+ num.to_s.tr('0123456789', '0123456789')
85
+ end
86
+
87
+ def last_day_of_month(year, month, is_leap)
88
+ if year >= GREGORIAN_START_YEAR
89
+ tmp_y = year
90
+ tmp_m = month
91
+ if month == 12
92
+ tmp_y += 1
93
+ tmp_m = 1
94
+ else
95
+ tmp_m += 1
96
+ end
97
+ day = (::Date.new(tmp_y, tmp_m, 1, Date::GREGORIAN)-1).day
98
+ else
99
+ yobj = YEAR_BY_NUM[year] or
100
+ raise UnsupportedDateRange, "Cannot find year #{self.inspect}"
101
+ month_idx = month - 1
102
+ if is_leap || yobj.leap_month && yobj.leap_month < month
103
+ month_idx += 1
104
+ end
105
+ day = yobj.month_days[month_idx]
106
+ end
107
+ day
108
+ end
109
+
110
+ def alt_month_name_to_i(name)
111
+ i = ALT_MONTH_NAME.index(name) or return false
112
+ i + 1
113
+ end
114
+
115
+ def alt_month_name(month)
116
+ ALT_MONTH_NAME[month - 1]
117
+ end
118
+
119
+ def _to_date(d)
120
+ if d.kind_of? ::Date
121
+ d # nothing to do
122
+ elsif d.kind_of?(Time)
123
+ d.to_date
124
+ else
125
+ ::Date.jd(d.to_i)
126
+ end
127
+ end
128
+
129
+ def _to_jd(d)
130
+ if d.kind_of? ::Date
131
+ d.jd
132
+ elsif d.kind_of?(Time)
133
+ d.to_date.jd
134
+ else
135
+ d.to_i
136
+ end
137
+ end
138
+
139
+ def find_date_ary(d)
140
+ d = _to_date(d).new_start(::Date::GREGORIAN)
141
+ if d.jd >= GREGORIAN_START
142
+ return [d.year, d.month, d.day, false]
143
+ end
144
+
145
+ yobj = find_year(d) or raise UnsupportedDateRange, "Unsupported date: #{d.inspect}"
146
+ month = 0
147
+ is_leap = false
148
+ if yobj.month_starts.last <= d.jd
149
+ month = yobj.month_starts.count
150
+ else
151
+ month = yobj.month_starts.find_index {|m| d.jd <= (m - 1) }
152
+ end
153
+ month_start = yobj.month_starts[month-1]
154
+ is_leap = (yobj.leap_month == (month - 1))
155
+ if yobj.leap_month && yobj.leap_month < month
156
+ month -= 1
157
+ end
158
+ [yobj.year, month, d.jd - month_start +1, is_leap]
159
+ end
160
+
161
+ def find_year(d)
162
+ jd = _to_jd(d)
163
+ YEAR_DEFS.bsearch{|y| y.end > jd }
164
+ end
165
+
166
+ def find_era(d)
167
+ jd = _to_jd(d)
168
+ e = ERA_DEFS.bsearch{|e| e.end > jd }
169
+ e.start > jd and return nil
170
+ e
171
+ end
172
+ end
173
+ end
@@ -0,0 +1,3 @@
1
+ module Wareki
2
+ VERSION = "0.1.0"
3
+ end
data/lib/wareki.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'wareki/date'
2
+ require 'wareki/core_ext'