py/gadict_c5.py
changeset 554 59714b9033bc
parent 537 a70ab6a33bfa
child 560 dad049a0f585
equal deleted inserted replaced
553:45a3138c9b4d 554:59714b9033bc
    63 FOUT.write("\n\n")
    63 FOUT.write("\n\n")
    64 FOUT.write(PRELUDE.about)
    64 FOUT.write(PRELUDE.about)
    65 FOUT.write("\n")
    65 FOUT.write("\n")
    66 
    66 
    67 
    67 
    68 def attr_key(item):
    68 for (headwords, translations) in DOM[1:]:
    69     (word, (pron, attrs)) = item
       
    70     if not attrs:
       
    71         return "zzz"
       
    72     best_vattr = None
       
    73     for attr in attrs:
       
    74         if attr in ["v1", "v2", "v3"]:
       
    75             if not best_vattr or (best_vattr and best_vattr > attr):
       
    76                 best_vattr = attr
       
    77     if best_vattr:
       
    78         return best_vattr
       
    79     for attr in attrs:                      # single/plural
       
    80         if attr in ["s"]:
       
    81             return attr
       
    82     for attr in attrs:                      # comparative/superlative
       
    83         if attr in ["comp"]:
       
    84             return attr
       
    85     for attr in attrs:                      # Am/Br/Au
       
    86         if attr in ["Am"]:
       
    87             return attr
       
    88     return "zzz"
       
    89 
       
    90 
       
    91 for idx in range(1, len(DOM)):
       
    92     article = DOM[idx]
       
    93     FOUT.write("_____\n\n")
    69     FOUT.write("_____\n\n")
    94     title = "; ".join(article[0].keys())
    70     title = "; ".join([h.headword for h in headwords])
    95     FOUT.write(title)
    71     FOUT.write(title)
    96     FOUT.write("\n\n")
    72     FOUT.write("\n\n")
    97     defs = article[0].items()
    73     for hw in headwords:
    98     defs = sorted(defs, key = attr_key)
       
    99     for (word, (pron, attrs)) in defs:
       
   100         FOUT.write("  ")
    74         FOUT.write("  ")
   101         FOUT.write(word)
    75         FOUT.write(hw.headword)
   102         if pron is not None:
    76         if hw.pron is not None:
   103             FOUT.write(" [")
    77             FOUT.write(" [")
   104             FOUT.write(pron)
    78             FOUT.write(hw.pron)
   105             FOUT.write("]")
    79             FOUT.write("]")
   106         if len(attrs) > 0:
    80         if len(hw.attrs) > 0:
   107             FOUT.write(" ")
    81             FOUT.write(" ")
   108             l = ["«"+x+"»" for x in attrs]
    82             l = ["«"+x+"»" for x in hw.attrs]
   109             l.sort()
    83             l.sort()
   110             FOUT.write(", ".join(l))
    84             FOUT.write(", ".join(l))
   111         FOUT.write("\n")
    85         FOUT.write("\n")
   112     FOUT.write("\n")
    86     FOUT.write("\n")
   113     for sense in article[1]:
    87     for sense in translations:
   114         if not sense:
    88         if not sense:
   115             raise Exception("""Empty sense for article: """ + article[0].__iter__().__next__())
    89             raise Exception("""Empty sense for article: """ + headwords.__iter__().__next__())
   116         FOUT.write("  ")
    90         FOUT.write("  ")
   117         if sense.pos:
    91         if sense.pos:
   118             FOUT.write("«")
    92             FOUT.write("«")
   119             FOUT.write(sense.pos)
    93             FOUT.write(sense.pos)
   120             FOUT.write("» ")
    94             FOUT.write("» ")