def write_character_names(outfile, table, base_mod): import triegenerator names = dict((table.get_char(code).name, code) for code in table.all_codes() if table.get_char(code).name) sorted_names_codes = sorted(names.iteritems()) if base_mod is None: triegenerator.build_compression_tree(outfile, names) print >> outfile, "# the following dictionary is used by modules that take this as a base" print >> outfile, "_orig_names = {" for name, code in sorted_names_codes: print >> outfile, "%r: %r," % (name, code) print >> outfile, "}" else: print >> outfile, '_names = {' for name, code in sorted_names_codes: try: if base_mod.lookup_charcode(code) == name: continue except KeyError: pass print >> outfile, '%r: %r,' % (code, name) print >> outfile, '}' print >> outfile, '_names_corrected = {' for name, code in sorted(base_mod._orig_names.iteritems()): if name not in names: print >> outfile, '%r: None,' % code print >> outfile, '}' print >> outfile, '_code_by_name = {' corrected = {} for name, code in sorted_names_codes: try: if base_mod.lookup_charcode(code) == name: continue except KeyError: pass print >> outfile, '%r: %r,' % (name, code) print >> outfile, '}' print >> outfile, '_code_by_name_corrected = {' for name, code in sorted(base_mod._orig_names.iteritems()): if name not in names: print >> outfile, '%r: None,' % name print >> outfile, '}'