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>" |