py/gadict_srs_anki.py
changeset 570 181897a421e9
parent 569 5709d5bd349b
child 574 5478477ab2ae
equal deleted inserted replaced
569:5709d5bd349b 570:181897a421e9
   158         export = AnkiPackageExporter(self.collection)
   158         export = AnkiPackageExporter(self.collection)
   159         export.exportInto(fname)
   159         export.exportInto(fname)
   160 
   160 
   161     def close(self):
   161     def close(self):
   162         self.collection.close()
   162         self.collection.close()
       
   163 
       
   164 def write_sense(buf, sense, with_examples = True):
       
   165     buf.append("<div class='sense'>")
       
   166     if sense.pos:
       
   167         buf.append("<span class='pos'>")
       
   168         buf.append(sense.pos)
       
   169         buf.append("</span>")
       
   170     if sense.ant_list and len(sense.ant_list) > 0:
       
   171         buf.append(" <span class='ant'>ant: ")
       
   172         buf.append("; ".join(sense.ant_list))
       
   173         buf.append("</span>")
       
   174     if sense.syn_list and len(sense.syn_list) > 0:
       
   175         buf.append(" <span class='syn'>syn: ")
       
   176         buf.append("; ".join(sense.syn_list))
       
   177         buf.append("</span>")
       
   178     for (lang, tr) in sense.tr_list or []:
       
   179         if len(sense.tr_list) > 1:
       
   180             buf.append("<div class='sense'>")
       
   181         buf.append(" <span class='lang'>")
       
   182         buf.append(lang)
       
   183         buf.append("</span>")
       
   184         buf.append(" <span class='tr'>")
       
   185         buf.append(tr)
       
   186         buf.append("</span>")
       
   187         if len(sense.tr_list) > 1:
       
   188             buf.append("</div>")
       
   189     for (lang, tr) in sense.glos_list or []:
       
   190         buf.append("<div class='glos'>")
       
   191         buf.append(" <span class='lang'>")
       
   192         buf.append(lang)
       
   193         buf.append("</span>")
       
   194         buf.append(" <span class='glos'>")
       
   195         buf.append(tr)
       
   196         buf.append("</span>")
       
   197         buf.append("</div>")
       
   198     for (lang, tr) in (with_examples and sense.ex_list) or []:
       
   199         buf.append("<div class='ex'>")
       
   200         buf.append(" <span class='lang'>")
       
   201         buf.append(lang)
       
   202         buf.append("</span>")
       
   203         buf.append(" <span class='ex'>")
       
   204         buf.append(tr)
       
   205         buf.append("</span>")
       
   206         buf.append("</div>")
   163 
   207 
   164 try:
   208 try:
   165     builder = AnkiDbBuilder(TMPDIR, FBASENAME)
   209     builder = AnkiDbBuilder(TMPDIR, FBASENAME)
   166 
   210 
   167     for (headwords, translations) in DOM[1:]:
   211     for (headwords, translations) in DOM[1:]:
   196                 plural = (hw.headword, hw.pron)
   240                 plural = (hw.headword, hw.pron)
   197             buf.append("</div>")
   241             buf.append("</div>")
   198         direct_from = "".join(buf)
   242         direct_from = "".join(buf)
   199         buf = []
   243         buf = []
   200         for sense in translations:
   244         for sense in translations:
   201             buf.append("<div class='sense'>")
   245             write_sense(buf, sense, with_examples = True)
   202             if sense.pos:
       
   203                 buf.append("<span class='pos'>")
       
   204                 buf.append(sense.pos)
       
   205                 buf.append("</span>")
       
   206             if sense.ant_list and len(sense.ant_list) > 0:
       
   207                 buf.append(" <span class='ant'>ant: ")
       
   208                 buf.append("; ".join(sense.ant_list))
       
   209                 buf.append("</span>")
       
   210             if sense.syn_list and len(sense.syn_list) > 0:
       
   211                 buf.append(" <span class='syn'>syn: ")
       
   212                 buf.append("; ".join(sense.syn_list))
       
   213                 buf.append("</span>")
       
   214             for (lang, tr) in sense.tr_list or []:
       
   215                 if len(sense.tr_list) > 1:
       
   216                     buf.append("<div class='sense'>")
       
   217                 buf.append(" <span class='lang'>")
       
   218                 buf.append(lang)
       
   219                 buf.append("</span>")
       
   220                 buf.append(" <span class='tr'>")
       
   221                 buf.append(tr)
       
   222                 buf.append("</span>")
       
   223                 if len(sense.tr_list) > 1:
       
   224                     buf.append("</div>")
       
   225             for (lang, tr) in sense.ex_list or []:
       
   226                 buf.append("<div class='ex'>")
       
   227                 buf.append(" <span class='lang'>")
       
   228                 buf.append(lang)
       
   229                 buf.append("</span>")
       
   230                 buf.append(" <span class='ex'>")
       
   231                 buf.append(tr)
       
   232                 buf.append("</span>")
       
   233                 buf.append("</div>")
       
   234             for (lang, tr) in sense.glos_list or []:
       
   235                 buf.append("<div class='glos'>")
       
   236                 buf.append(" <span class='lang'>")
       
   237                 buf.append(lang)
       
   238                 buf.append("</span>")
       
   239                 buf.append(" <span class='glos'>")
       
   240                 buf.append(tr)
       
   241                 buf.append("</span>")
       
   242                 buf.append("</div>")
       
   243         direct_to = "".join(buf)
   246         direct_to = "".join(buf)
   244         buf = []
   247         buf = []
   245         for sense in translations:
   248         for sense in translations:
   246             buf.append("<div class='sense'>")
   249             write_sense(buf, sense, with_examples = False)
   247             if sense.pos:
       
   248                 buf.append("<span class='pos'>")
       
   249                 buf.append(sense.pos)
       
   250                 buf.append("</span>")
       
   251             need_sep = False
       
   252             if sense.ant_list and len(sense.ant_list) > 0:
       
   253                 buf.append(" <span class='ant'>ant: ")
       
   254                 buf.append("; ".join(sense.ant_list))
       
   255                 buf.append("</span>")
       
   256                 need_sep = True
       
   257             if sense.syn_list and len(sense.syn_list) > 0:
       
   258                 if need_sep:
       
   259                     buf.append(" |")
       
   260                 buf.append(" <span class='syn'>syn: ")
       
   261                 buf.append("; ".join(sense.syn_list))
       
   262                 buf.append("</span>")
       
   263                 need_sep = True
       
   264             if sense.rel_list and len(sense.rel_list) > 0:
       
   265                 if need_sep:
       
   266                     buf.append(" |")
       
   267                 buf.append(" <span class='rel'>rel: ")
       
   268                 buf.append("; ".join(sense.rel_list))
       
   269                 buf.append("</span>")
       
   270             for (lang, tr) in sense.tr_list or []:
       
   271                 if len(sense.tr_list) > 1:
       
   272                     buf.append("<div class='sense'>")
       
   273                 buf.append(" <span class='lang'>")
       
   274                 buf.append(lang)
       
   275                 buf.append("</span>")
       
   276                 buf.append(" <span class='tr'>")
       
   277                 buf.append(tr)
       
   278                 buf.append("</span>")
       
   279                 if len(sense.tr_list) > 1:
       
   280                     buf.append("</div>")
       
   281             for (lang, tr) in sense.glos_list or []:
       
   282                 buf.append("<div class='glos'>")
       
   283                 buf.append(" <span class='lang'>")
       
   284                 buf.append(lang)
       
   285                 buf.append("</span>")
       
   286                 buf.append(" <span class='glos'>")
       
   287                 buf.append(tr)
       
   288                 buf.append("</span>")
       
   289                 buf.append("</div>")
       
   290         reverse_from = "".join(buf)         # without examples!!
   250         reverse_from = "".join(buf)         # without examples!!
   291         builder.add_note("en->tr", identity, direct_from, direct_to)
   251         builder.add_note("en->tr", identity, direct_from, direct_to)
   292         builder.add_note("tr->en", identity, reverse_from, direct_from)
   252         builder.add_note("tr->en", identity, reverse_from, direct_from)
   293         if v1 and v2 and v3:
   253         if v1 and v2 and v3:
   294             question = u"<div class='ask'>Find irregular verb:</div>"
   254             question = u"<div class='ask'>Find irregular verb:</div>"