make japanese/chinese generation fields more easily customizable

This commit is contained in:
Damien Elmes 2008-12-23 13:48:05 +09:00
parent f903288c59
commit 490c7c4bed
2 changed files with 18 additions and 9 deletions

View file

@ -7,6 +7,11 @@ from anki.utils import findTag, stripHTML
from anki.hooks import addHook
from anki.db import *
cantoneseTag = "Cantonese"
mandarinTag = "Mandarin"
srcField = "Expression"
dstField = "Reading"
class UnihanController(object):
def __init__(self, target):
@ -61,19 +66,19 @@ class ChineseGenerator(object):
unihan = ChineseGenerator()
def onFocusLost(fact, field):
if field.name != "Expression":
if field.name != srcField:
return
if findTag("Cantonese", fact.model.tags):
if findTag(cantoneseTag, fact.model.tags):
type = "cantonese"
elif findTag("Mandarin", fact.model.tags):
elif findTag(mandarinTag, fact.model.tags):
type = "mandarin"
else:
return
try:
if fact['Reading']:
if fact[dstField]:
return
except:
return
fact['Reading'] = unihan.toReading(type, field.value)
fact[dstField] = unihan.toReading(type, field.value)
addHook('fact.focusLost', onFocusLost)

View file

@ -6,6 +6,10 @@ import sys, os
from anki.utils import findTag, stripHTML
from anki.hooks import addHook
modelTag = "Japanese"
srcField = "Expression"
dstField = "Reading"
class KakasiController(object):
def __init__(self):
# add our pre-packaged kakasi to the path
@ -90,17 +94,17 @@ if not kakasi.available():
def onFocusLost(fact, field):
if not kakasi:
return
if field.name != "Expression":
if field.name != srcField:
return
if not findTag("Japanese", fact.model.tags):
if not findTag(modelTag, fact.model.tags):
return
try:
if fact['Reading']:
if fact[dstField]:
return
except:
return
tmp = kakasi.toFurigana(field.value)
if tmp != field.value:
fact['Reading'] = tmp
fact[dstField] = tmp
addHook('fact.focusLost', onFocusLost)