| 
									
										
										
										
											2010-03-11 22:53:45 +00:00
										 |  |  | #!/usr/bin/env python3 | 
					
						
							| 
									
										
										
										
											2003-01-01 20:26:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | For each argument on the command line, look for it in the set of all Unicode | 
					
						
							|  |  |  | names.  Arguments are treated as case-insensitive regular expressions, e.g.: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     % find-uname 'small letter a$' 'horizontal line' | 
					
						
							|  |  |  |     *** small letter a$ matches *** | 
					
						
							|  |  |  |     LATIN SMALL LETTER A (97) | 
					
						
							|  |  |  |     COMBINING LATIN SMALL LETTER A (867) | 
					
						
							|  |  |  |     CYRILLIC SMALL LETTER A (1072) | 
					
						
							|  |  |  |     PARENTHESIZED LATIN SMALL LETTER A (9372) | 
					
						
							|  |  |  |     CIRCLED LATIN SMALL LETTER A (9424) | 
					
						
							|  |  |  |     FULLWIDTH LATIN SMALL LETTER A (65345) | 
					
						
							|  |  |  |     *** horizontal line matches *** | 
					
						
							|  |  |  |     HORIZONTAL LINE EXTENSION (9135) | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import unicodedata | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(args): | 
					
						
							| 
									
										
										
										
											2009-10-10 22:05:26 +00:00
										 |  |  |     unicode_names = [] | 
					
						
							| 
									
										
										
										
											2003-01-01 20:26:47 +00:00
										 |  |  |     for ix in range(sys.maxunicode+1): | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2009-10-10 22:05:26 +00:00
										 |  |  |             unicode_names.append((ix, unicodedata.name(chr(ix)))) | 
					
						
							| 
									
										
										
										
											2003-01-01 20:26:47 +00:00
										 |  |  |         except ValueError: # no name for the character | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |     for arg in args: | 
					
						
							|  |  |  |         pat = re.compile(arg, re.I) | 
					
						
							| 
									
										
										
										
											2009-10-10 22:05:26 +00:00
										 |  |  |         matches = [(y,x) for (x,y) in unicode_names | 
					
						
							|  |  |  |                    if pat.search(y) is not None] | 
					
						
							| 
									
										
										
										
											2003-01-01 20:26:47 +00:00
										 |  |  |         if matches: | 
					
						
							| 
									
										
										
										
											2007-07-17 20:59:35 +00:00
										 |  |  |             print("***", arg, "matches", "***") | 
					
						
							| 
									
										
										
										
											2009-10-10 22:05:26 +00:00
										 |  |  |             for match in matches: | 
					
						
							|  |  |  |                 print("%s (%d)" % match) | 
					
						
							| 
									
										
										
										
											2003-01-01 20:26:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     main(sys.argv[1:]) |