3 """! @pmodule wrapper Contains one main function, wrapper_rw(), which runs another function which should be a user function. If the library raises an exception, wrapper_rw() will restore the terminal to a sane state so you can read the resulting traceback.
10 sys.path.append(
'./pylmflib')
13 from input.mdf
import mdf_read
14 from input.xml_lmf
import xml_lmf_read
as lmf_read
15 from config.xml
import sort_order_read
as order_read
16 from config.xml
import config_read
19 from output.mdf
import mdf_write
20 from output.xml_lmf
import xml_lmf_write
as lmf_write
21 from output.tex
import tex_write
23 from utils.error_handling
import Error
24 from utils.log
import log
27 lexical_resource =
None
30 """! @brief Wrapper function that calls another function, restoring normal behavior on error.
31 @param func Callable object.
32 @param args Arguments passed to 'func' as its first argument.
33 @param kwds Other arguments passed to 'func'.
38 object = func(*args, **kwds)
39 if object.__class__.__name__ ==
"LexicalResource":
40 wrapper.lexical_resource = object
42 elif object.__class__.__name__ ==
"Lexicon":
43 from core.lexical_resource
import LexicalResource
44 if wrapper.lexical_resource
is None:
46 wrapper.lexical_resource = LexicalResource()
48 if wrapper.lexical_resource.get_lexicon(object.get_id())
is None:
49 wrapper.lexical_resource.add_lexicon(object)
50 return wrapper.lexical_resource
51 elif type(object) == type(dict())
or type(object) == type(tuple()):
53 except Error
as exception:
62 sys.stderr.write(
"Unexpected error: " + str(sys.exc_info()[0]) +
"\n")
74 from pylmflib
import options
81 if id
is not None and wrapper.lexical_resource
is not None:
82 lexicon = wrapper.lexical_resource.get_lexicon(id)
84 kwds.update({
'lexicon': lexicon})
86 lexical_resource =
wrapper_rw(mdf_read, *args, **kwds)
87 for lexicon
in lexical_resource.lexicon:
88 if options.cross_references:
90 lexicon.check_cross_references()
91 log(
"Successfully created %s LMF entries from MDF file '%s'." % (lexicon.count_lexical_entries(), lexicon.get_entrySource()))
92 return lexical_resource
96 from pylmflib
import options
99 lexical_resource =
wrapper_rw(lmf_read, *args, **kwds)
102 for lexicon
in lexical_resource.get_lexicons():
103 entries_nb += lexicon.count_lexical_entries()
104 if options.cross_references:
106 lexicon.check_cross_references()
107 log(
"Successfully created %s LMF entries from XML LMF file '%s'." % (entries_nb, args[0]))
108 return lexical_resource
111 sort_order =
wrapper_rw(order_read, *args, **kwds)
112 log(
"Successfully read sort order: " + str(sort_order))
116 lexical_resource =
wrapper_rw(config_read, *args, **kwds)
117 log(
"Successfully read config")
118 return lexical_resource
122 for lexicon
in args[0].get_lexicons():
123 wrapper_rw(mdf_write, lexicon, *args[1:], **kwds)
124 log(
"Successfully wrote %s LMF entries into MDF file '%s'." % (lexicon.count_lexical_entries(), args[1]))
131 for lexicon
in args[0].get_lexicons():
132 entries_nb += lexicon.count_lexical_entries()
133 log(
"Successfully wrote %s LMF entries into XML LMF file '%s'." % (entries_nb, args[1]))
140 for lexicon
in args[0].get_lexicons():
141 entries_nb += lexicon.count_lexical_entries()
142 log(
"Successfully wrote %s LMF entries into LaTeX file '%s'." % (entries_nb, args[1]))
146 from output.doc
import doc_write
151 for lexicon
in args[0].get_lexicons():
152 entries_nb += lexicon.count_lexical_entries()
153 log(
"Successfully wrote %s LMF entries into document file '%s'." % (entries_nb, args[1]))
157 from output.odt
import odt_write
162 for lexicon
in args[0].get_lexicons():
163 entries_nb += lexicon.count_lexical_entries()
164 log(
"Successfully wrote %s LMF entries into document file '%s'." % (entries_nb, args[1]))
def wrapper_rw
Wrapper function that calls another function, restoring normal behavior on error. ...
def log
Write message into log file if any, or to standard output if verbose mode is on.