6 from core.lexical_resource
import LexicalResource
7 from core.lexicon
import Lexicon
8 from utils.xml_format
import parse_xml
9 from utils.error_handling
import InputError
10 from config.mdf
import mdf_lmf, lmf_mdf, mdf_order, ps_partOfSpeech, pdl_paradigmLabel, pd_grammaticalNumber, pd_person, pd_anymacy, pd_clusivity
11 from config.tex
import partOfSpeech_tex, paradigmLabel_tex
12 from common.range
import partOfSpeech_range, paradigmLabel_range
20 """! @brief Read an XML file giving sort order.
21 @param filename The name of the XML file to read with full path, for instance 'pylmflib/pylmflib/config/default/sort_order.xml'.
22 @return A Python dictionary of ordered characters.
30 if rules.tag !=
"rules":
31 raise InputError(module_name +
".py",
"XML file '%s' is not well-formatted." % filename)
34 if rule.tag !=
"rule":
35 raise InputError(module_name +
".py",
"XML file '%s' is not well-formatted." % filename)
36 order.update({rule.attrib[
"str"] : float(rule.attrib[
"rank"])})
38 type.update({rule.attrib[
"str"] : rule.attrib[
"type"]})
46 """! @brief Read an XML file giving the user configuration.
47 @param filename The name of the XML file to read with full path, for instance 'pylmflib/pylmflib/config/default/config.xml'.
48 @return A Lexical Resource.
54 for format
in configuration:
55 if format.tag ==
"Language":
59 exec(
"config.xml." + lang.attrib[
"att"] +
" = '" + lang.attrib[
"val"] +
"'")
60 elif format.tag ==
"Font":
61 config.xml.font = dict()
65 exec(
"l = lambda " + font.attrib[
'var'] +
": " + font.text)
66 config.xml.font.update({font.attrib[
'att']: l})
67 elif format.tag ==
"LMF":
69 lexical_resource = LexicalResource(format[0].attrib[
"dtdVersion"])
70 for object
in format[0]:
71 if object.tag ==
"GlobalInformation":
74 if feat.attrib[
"att"] ==
"languageCode":
75 lexical_resource.set_language_code(feat.attrib[
"val"])
76 elif feat.attrib[
"att"] ==
"author":
77 lexical_resource.set_author(feat.attrib[
"val"])
78 elif feat.attrib[
"att"] ==
"version":
79 lexical_resource.set_version(feat.attrib[
"val"])
80 elif feat.attrib[
"att"] ==
"lastUpdate":
81 lexical_resource.set_last_update(feat.attrib[
"val"])
82 elif feat.attrib[
"att"] ==
"license":
83 lexical_resource.set_license(feat.attrib[
"val"])
84 elif feat.attrib[
"att"] ==
"characterEncoding":
85 lexical_resource.set_character_encoding(feat.attrib[
"val"])
86 elif feat.attrib[
"att"] ==
"dateCoding":
87 lexical_resource.set_date_coding(feat.attrib[
"val"])
88 elif feat.attrib[
"att"] ==
"creationDate":
89 lexical_resource.set_creation_date(feat.attrib[
"val"])
90 elif feat.attrib[
"att"] ==
"projectName":
91 lexical_resource.set_project_name(feat.attrib[
"val"])
92 elif feat.attrib[
"att"] ==
"description":
93 lexical_resource.set_description(feat.attrib[
"val"])
94 elif object.tag ==
"Lexicon":
96 lexicon = Lexicon(object.attrib[
"id"])
99 if feat.attrib[
"att"] ==
"language":
100 lexicon.set_language(feat.attrib[
"val"])
101 elif feat.attrib[
"att"] ==
"languageScript":
102 lexicon.set_languageScript(feat.attrib[
"val"])
103 elif feat.attrib[
"att"] ==
"label":
104 lexicon.set_label(feat.attrib[
"val"])
105 elif feat.attrib[
"att"] ==
"lexiconType":
106 lexicon.set_lexiconType(feat.attrib[
"val"])
107 elif feat.attrib[
"att"] ==
"entrySource":
108 lexicon.set_entrySource(feat.attrib[
"val"])
109 elif feat.attrib[
"att"] ==
"localPath":
110 lexicon.set_localPath(feat.attrib[
"val"])
112 config.xml.audio_path = os.path.abspath(os.path.abspath(
'.') +
"/" + feat.attrib[
"val"]) +
"/"
114 lexical_resource.add_lexicon(lexicon)
115 elif format.tag ==
"MDF":
117 if mdf.tag ==
"mdf_lmf":
119 exec(
"l = lambda " + mdf.attrib[
'var'] +
": " + mdf.text)
120 mdf_lmf.update({mdf.attrib[
'marker']: l})
121 elif mdf.tag ==
"ps_partOfSpeech":
123 ps_partOfSpeech.update({mdf.attrib[
'ps']: mdf.attrib[
'partOfSpeech']})
125 partOfSpeech_range.add(mdf.attrib[
'partOfSpeech'])
127 partOfSpeech_tex.update({mdf.attrib[
'partOfSpeech']: mdf.attrib[
'ps']})
128 elif mdf.tag ==
"pdl_paradigmLabel":
130 pdl_paradigmLabel.update({mdf.attrib[
'pdl']: mdf.attrib[
'paradigmLabel']})
132 paradigmLabel_range.add(mdf.attrib[
'paradigmLabel'])
134 paradigmLabel_tex.update({mdf.attrib[
'paradigmLabel']: mdf.attrib[
'pdl']})
135 elif mdf.tag ==
"lmf_mdf":
137 exec(
"l = lambda " + mdf.attrib[
'var'] +
": " + mdf.text)
138 lmf_mdf.update({mdf.attrib[
'marker']: l})
139 elif mdf.tag ==
"mdf_order":
142 mdf_order.append(element.tag)
144 for level1
in element:
145 list1.append(level1.tag)
147 for level2
in level1:
148 list2.append(level2.tag)
152 mdf_order.append(list1)
153 elif format.tag ==
"LaTeX":
155 if param.tag ==
"partOfSpeech_tex":
158 partOfSpeech_tex.update({(param.attrib[
'lang'], param.attrib[
'partOfSpeech']): param.attrib[
'tex']})
160 partOfSpeech_tex.update({param.attrib[
'partOfSpeech']: param.attrib[
'tex']})
162 partOfSpeech_range.add(param.attrib[
'partOfSpeech'])
163 elif param.tag ==
"paradigmLabel_tex":
165 paradigmLabel_tex.update({param.attrib[
'paradigmLabel']: param.attrib[
'tex']})
167 paradigmLabel_range.add(param.attrib[
'paradigmLabel'])
169 raise InputError(module_name +
".py",
"XML file '%s' is not well-formatted." % filename)
170 return lexical_resource
def sort_order_read
Read an XML file giving sort order.
def config_read
Read an XML file giving the user configuration.