23 lines
1,010 B
Plaintext
23 lines
1,010 B
Plaintext
|
|
"""
|
||
|
|
ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろわをんーゎゐゑゕゖゔゝゞ・「」。、
|
||
|
|
ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヲンーヮヰヱヵヶヴヽヾ・「」。、
|
||
|
|
"""
|
||
|
|
|
||
|
|
import fugashi
|
||
|
|
import sys
|
||
|
|
|
||
|
|
if len(sys.argv) != 2:
|
||
|
|
print('usage: furigana <word>')
|
||
|
|
exit(1)
|
||
|
|
|
||
|
|
H, K = __doc__.strip().split('\n')
|
||
|
|
t = {ord(a): ord(b) for a, b in zip(K, H)}
|
||
|
|
|
||
|
|
r = []
|
||
|
|
for x in fugashi.Tagger().parseToNodeList(sys.argv[1]):
|
||
|
|
if all(c in H + K for c in x.surface) or not x.feature.kana:
|
||
|
|
r.append(x.surface)
|
||
|
|
else:
|
||
|
|
r.append(f" {x.surface}[{x.feature.kana.translate(t)}]")
|
||
|
|
print(''.join(r).strip())
|