mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 22:42:25 -04:00
make japanese/chinese generation fields more easily customizable
This commit is contained in:
parent
f903288c59
commit
490c7c4bed
2 changed files with 18 additions and 9 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue