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

View file

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