17db96d56Sopenharmony_ci#!/usr/bin/env python3 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_ci""" 47db96d56Sopenharmony_ciFor each argument on the command line, look for it in the set of all Unicode 57db96d56Sopenharmony_cinames. Arguments are treated as case-insensitive regular expressions, e.g.: 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci % find-uname 'small letter a$' 'horizontal line' 87db96d56Sopenharmony_ci *** small letter a$ matches *** 97db96d56Sopenharmony_ci LATIN SMALL LETTER A (97) 107db96d56Sopenharmony_ci COMBINING LATIN SMALL LETTER A (867) 117db96d56Sopenharmony_ci CYRILLIC SMALL LETTER A (1072) 127db96d56Sopenharmony_ci PARENTHESIZED LATIN SMALL LETTER A (9372) 137db96d56Sopenharmony_ci CIRCLED LATIN SMALL LETTER A (9424) 147db96d56Sopenharmony_ci FULLWIDTH LATIN SMALL LETTER A (65345) 157db96d56Sopenharmony_ci *** horizontal line matches *** 167db96d56Sopenharmony_ci HORIZONTAL LINE EXTENSION (9135) 177db96d56Sopenharmony_ci""" 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ciimport unicodedata 207db96d56Sopenharmony_ciimport sys 217db96d56Sopenharmony_ciimport re 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_cidef main(args): 247db96d56Sopenharmony_ci unicode_names = [] 257db96d56Sopenharmony_ci for ix in range(sys.maxunicode+1): 267db96d56Sopenharmony_ci try: 277db96d56Sopenharmony_ci unicode_names.append((ix, unicodedata.name(chr(ix)))) 287db96d56Sopenharmony_ci except ValueError: # no name for the character 297db96d56Sopenharmony_ci pass 307db96d56Sopenharmony_ci for arg in args: 317db96d56Sopenharmony_ci pat = re.compile(arg, re.I) 327db96d56Sopenharmony_ci matches = [(y,x) for (x,y) in unicode_names 337db96d56Sopenharmony_ci if pat.search(y) is not None] 347db96d56Sopenharmony_ci if matches: 357db96d56Sopenharmony_ci print("***", arg, "matches", "***") 367db96d56Sopenharmony_ci for match in matches: 377db96d56Sopenharmony_ci print("%s (%d)" % match) 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ciif __name__ == "__main__": 407db96d56Sopenharmony_ci main(sys.argv[1:]) 41