Skip to content

Commit

Permalink
JA: use prefer for ambiguous eras
Browse files Browse the repository at this point in the history
  • Loading branch information
siikamiika committed Jun 15, 2018
1 parent 15426ae commit d96b828
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 9 deletions.
4 changes: 4 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ prefer those in the sequence ``prefer``::
ななじゅうよん
>>> num2words(74, lang='ja', reading=True, prefer=['し', 'しち'])
しちじゅうし
>>> num2words(1375, lang='ja', to="year")
天授元年
>>> num2words(1375, lang='ja', to="year", prefer=['えいわ'])
永和元年

**era:** (``year`` only) whether or not to convert the year to the era
calendar format. Defaults to ``True``::
Expand Down
28 changes: 19 additions & 9 deletions num2words/lang_JA.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def rendaku_merge_pairs(lpair, rpair):
(717, ("養老", "ようろう")),
(724, ("神亀", "じんき")),
(729, ("天平", "てんぴょう")),
# (749, ("天平感宝", "てんぴょうかんぽう")),
(749, ("天平感宝", "てんぴょうかんぽう")),
(749, ("天平勝宝", "てんぴょうしょうほう")),
(757, ("天平宝字", "てんぴょうじょうじ")),
(765, ("天平神護", "てんぴょうじんご")),
Expand Down Expand Up @@ -205,15 +205,15 @@ def rendaku_merge_pairs(lpair, rpair):
(1214, ("建保", "けんぽう")),
(1219, ("承久", "じょうきゅう")),
(1222, ("貞応", "じょうおう")),
# (1225, ("元仁", "げんにん")),
(1225, ("元仁", "げんにん")),
(1225, ("嘉禄", "かろく")),
(1228, ("安貞", "あんてい")),
(1229, ("寛喜", "かんき")),
(1232, ("貞永", "じょうえい")),
(1233, ("天福", "てんぷく")),
# (1235, ("文暦", "ぶんりゃく")),
(1235, ("文暦", "ぶんりゃく")),
(1235, ("嘉禎", "かてい")),
# (1239, ("暦仁", "りゃくにん")),
(1239, ("暦仁", "りゃくにん")),
(1239, ("延応", "えんおう")),
(1240, ("仁治", "にんじ")),
(1243, ("寛元", "かんげん")),
Expand All @@ -230,7 +230,7 @@ def rendaku_merge_pairs(lpair, rpair):
(1288, ("正応", "しょうおう")),
(1293, ("永仁", "えいにん")),
(1299, ("正安", "しょうあん")),
# (1303, ("乾元", "けんげん")),
(1303, ("乾元", "けんげん")),
(1303, ("嘉元", "かげん")),
(1307, ("徳治", "とくじ")),
(1308, ("延慶", "えんきょう")),
Expand Down Expand Up @@ -259,12 +259,12 @@ def rendaku_merge_pairs(lpair, rpair):
(1368, ("応安", "おうあん")),
(1370, ("建徳", "けんとく")),
(1372, ("文中", "ぶんちゅう")),
# (1375, ("永和", "えいわ")),
(1375, ("永和", "えいわ")),
(1375, ("天授", "てんじゅ")),
(1379, ("康暦", "こうりゃく")),
# (1381, ("永徳", "えいとく")),
(1381, ("永徳", "えいとく")),
(1381, ("弘和", "こうわ")),
# (1384, ("至徳", "しとく")),
(1384, ("至徳", "しとく")),
(1384, ("元中", "げんちゅう")),
(1387, ("嘉慶", "かけい")),
(1389, ("康応", "こうおう")),
Expand Down Expand Up @@ -437,7 +437,17 @@ def to_year(self, val, suffix=None, longval=True, reading=False,
if mid == last_era_idx or (ERA_START[mid][0] <= year and
ERA_START[mid + 1][0] > year):
era_idx = mid

# if an era lasting less than a year is preferred, choose it
if prefer:
i = mid - 1
while i >= 0 and ERA_START[i][0] == year:
# match kanji or hiragana
if set(ERA_START[i][1]) & set(prefer):
era_idx = i
break
i -= 1

# ends up at the last index where year >= ERA_START[mid][0]
if year < ERA_START[mid][0]:
last = mid - 1
else:
Expand Down
2 changes: 2 additions & 0 deletions tests/test_ja.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,5 @@ def test_year(self):
self.assertEqual(n2j(-99, to="year", era=False), "紀元前九十九年")
self.assertEqual(n2j(-99, to="year", era=False, reading=True),
"きげんぜんきゅうじゅうくねん")
self.assertEqual(n2j(1375, to="year"), "天授元年")
self.assertEqual(n2j(1375, to="year", prefer=["えいわ"]), "永和元年")

0 comments on commit d96b828

Please sign in to comment.