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