@classmethod<EOL><INDENT>def from_files(cls, *glyphdata_files):<DEDENT>
name_mapping = {}<EOL>alt_name_mapping = {}<EOL>production_name_mapping = {}<EOL>for glyphdata_file in glyphdata_files:<EOL><INDENT>glyph_data = xml.etree.ElementTree.parse(glyphdata_file).getroot()<EOL>for glyph in glyph_data:<EOL><INDENT>glyph_name = glyph.attrib["<STR_LIT:name>"]<EOL>glyph_name_alternatives = glyph.attrib.get("<STR_LIT>")<EOL>glyph_name_production = glyph.attrib.get("<STR_LIT>")<EOL>name_mapping[glyph_name] = glyph.attrib<EOL>if glyph_name_alternatives:<EOL><INDENT>alternatives = glyph_name_alternatives.replace("<STR_LIT:U+0020>", "<STR_LIT>").split("<STR_LIT:U+002C>")<EOL>for glyph_name_alternative in alternatives:<EOL><INDENT>alt_name_mapping[glyph_name_alternative] = glyph.attrib<EOL><DEDENT><DEDENT>if glyph_name_production:<EOL><INDENT>production_name_mapping[glyph_name_production] = glyph.attrib<EOL><DEDENT><DEDENT><DEDENT>return cls(name_mapping, alt_name_mapping, production_name_mapping)<EOL>
Return GlyphData holding data from a list of XML file paths.