From 3cb4ade4a1452edeb8db9b4719c8313582eefb3a Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Mon, 7 Mar 2011 17:40:15 +0900 Subject: [PATCH] simplify bold/italic/underline tags from qt in upgrade --- anki/storage.py | 7 +++++++ anki/utils.py | 11 +++++++++++ tests/support/anki12.anki | Bin 192512 -> 192512 bytes 3 files changed, 18 insertions(+) diff --git a/anki/storage.py b/anki/storage.py index e70383431..86461255d 100644 --- a/anki/storage.py +++ b/anki/storage.py @@ -420,6 +420,13 @@ def _postSchemaUpgrade(deck): "revCardsDue", "revCardsRandom", "acqCardsRandom", "acqCardsOld", "acqCardsNew"): deck.db.execute("drop view if exists %s" % v) + # minimize qt's bold/italics/underline cruft. we made need to use lxml to + # do this properly + from anki.utils import minimizeHTML + r = [(minimizeHTML(x[2]), x[0], x[1]) for x in deck.db.execute( + "select fid, fmid, val from fdata")] + deck.db.executemany("update fdata set val = ? where fid = ? and fmid = ?", + r) # ensure all templates use the new style field format, and update cach for m in deck.allModels(): for t in m.templates: diff --git a/anki/utils.py b/anki/utils.py index f717ee328..4daa82440 100644 --- a/anki/utils.py +++ b/anki/utils.py @@ -139,6 +139,16 @@ def stripHTMLMedia(s): s = re.sub("]+)[\"']? ?/?>", " \\1 ", s) return stripHTML(s) +def minimizeHTML(s): + "Correct Qt's verbose bold/underline/etc." + s = re.sub('(.*?)', '\\1', + s) + s = re.sub('(.*?)', '\\1', + s) + s = re.sub('(.*?)', + '\\1', s) + return s + def tidyHTML(html): "Remove cruft like body tags and return just the important part." # contents of body - no head or html tags @@ -160,6 +170,7 @@ def tidyHTML(html): html = re.sub(u"^
(.*)
$", u"\\1", html) # this is being added by qt's html editor, and leads to unwanted spaces html = re.sub(u"^

(.*?)

$", u'\\1', html) + html = minimizeHTML(html) return html def entsToTxt(html): diff --git a/tests/support/anki12.anki b/tests/support/anki12.anki index f39aeda6c292c4cb0545e3851da433e0ef2c254d..226abcab8c7d5563ad3d3f4f0de1508c6e45c8af 100644 GIT binary patch delta 848 zcmZp8z}@hGdxA70^F$eEM&^wPOZd5%`I8vNj_IvfK!o^ot=Y& zgA<6Am?aoE6@d&em|P$)%4ohxVOhN}CnJaB<(M}d|5kQ8UXE3@Jf^pA^UnFZ<=KGj zlM}i&SM6_i;OG3zz{b9mf$IkM0ZuOVrCS9Ur?QJSMZI{q;nSD(7giqBU|?foXXoW; zN}bNm#c06_())b64G*JIy-jgJVxB^ANo7u|tx{TkUWsmbYG!&yiItgwfwhudhK)W* zfn6%5IKrQ(; z`mA8nrwj5iicSB+%P2H`G8d!UbZ$<@7cAV18J=$c&dJEd#>s!1fs>Dwfsb`NmjL5$ z-ug!Ai|6ic0(xzMEIZI^98IEjPm=YzUnocmJ<9~ryi6#LptiTvZIuZ53+%1!tK}FC z7+Dw?7*x04muEDXzI)FoyAtY~ibK6kur*Wus|m;R`Hb fNGbq_)?%yIpeU4`o?y>Z2nsa8?N{xYv^M|%5273L delta 331 zcmZp8z}@hGdxA70<3t%}M#hZ^OZYjM_>&m;r}HOm7IX;XpPVG0%WcA`$jQ#m!NI}F zF}XlqOu+sJU(W#s1_l_tNnu&NFb5-tt)9RF5!gJ@Zs(uB=B=kJzhi+RI!cS-2x zs{QQ_{M?Hf*f_ZuxNdMC;N;@`yj6g4D*I*yfmFunT%3$ASsJ5WJly`BlaY&!6KFgq z-)aW_+uOMW7=QClT(E5WYB@#&Mi%Ld=k9L5FVAQ&f%Ogl5&j#S1p`X>r*AmV$TfY^ ze#Qj3m^U)tRpT$Vw(E7j&^*WmG>3(M0|WmX{u@Bm8-S`8fK@v|-L?J4c}5-spr;=) z@PFigxLGjaD*yI}{7ec8k{~DWCou5m^CtkM9`Rq~-^ag}e>Q*JW