Few new words.
# -*- coding: utf-8 -*-
"""dictd C5 format writer"""
import io
import sys
import codecs
import gadict
FINAME = None
FONAME = None
if len(sys.argv) >= 2:
FINAME = sys.argv[1]
if len(sys.argv) >= 3:
FONAME = sys.argv[2]
LANGS = None
if len(sys.argv) >= 4:
LANGS = set(sys.argv[3].split(","))
FIN = io.open(FINAME, mode='r', buffering=1, encoding="utf-8")
PARSER = gadict.Parser()
try:
DOM = PARSER.parse(FIN)
except gadict.ParseException as ex:
sys.stdout.write("{:s}{:s}\n".format(FINAME, repr(ex)))
if __debug__:
import traceback
traceback.print_exc()
exit(1)
finally:
FIN.close()
PRELUDE = DOM[0]
with open(FONAME+".name", "w") as f: # for dictfmt -s
if PRELUDE.name is not None:
f.write(PRELUDE.name)
f.write("\n")
with open(FONAME+".url", "w") as f: # for dictfmt -u
if len(PRELUDE.urls) > 0:
f.write(PRELUDE.urls[0])
f.write("\n")
if FONAME is None:
FOUT = sys.stdout
else:
FOUT = codecs.open(FONAME, "w", "utf-8")
if PRELUDE.name is not None:
FOUT.write("Dictionary name: ")
FOUT.write(PRELUDE.name)
FOUT.write("\n\n")
FOUT.write("Project URLs: ")
FOUT.write(" , ".join(PRELUDE.urls))
FOUT.write("\n\n")
FOUT.write("Project licenses: ")
FOUT.write(", ".join(PRELUDE.licences))
FOUT.write("\n\n")
FOUT.write(PRELUDE.about)
FOUT.write("\n")
for idx in range(1, len(DOM)):
article = DOM[idx]
FOUT.write("_____\n\n")
title = "; ".join(article[0].keys())
FOUT.write(title)
FOUT.write("\n\n")
for (word, (pron, attrs)) in article[0].items():
FOUT.write(" ")
FOUT.write(word)
if pron is not None:
FOUT.write(" [")
FOUT.write(pron)
FOUT.write("]")
if len(attrs) > 0:
FOUT.write(" ")
l = ["«"+x+"»" for x in attrs]
l.sort()
FOUT.write(", ".join(l))
FOUT.write("\n")
FOUT.write("\n")
for (pos, trs, exs) in article[1]:
FOUT.write(" ")
if pos is not None:
FOUT.write("«")
FOUT.write(pos)
FOUT.write("» ")
FOUT.write("\n")
for (lang, tr) in trs:
FOUT.write(" ")
if LANGS is None:
FOUT.write(lang)
FOUT.write("→ ")
FOUT.write(tr)
elif lang in LANGS:
if len(LANGS) == 1:
FOUT.write(tr)
else:
FOUT.write(lang)
FOUT.write("→ ")
FOUT.write(tr)
FOUT.write("\n")