Skip to content

Instantly share code, notes, and snippets.

@wzyboy
Last active November 24, 2015 05:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wzyboy/93b8c813422e869d214e to your computer and use it in GitHub Desktop.
Save wzyboy/93b8c813422e869d214e to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import sys
import unicodedata
from argparse import ArgumentParser
print('Unicode data version: {}'.format(unicodedata.unidata_version))
def name(chars):
names = (
(char, 'U+%04X' % ord(char), unicodedata.name(char, None))
for char in chars
)
return names
def lookup(name):
matched = (
(c, 'U+%04X' % ord(c), unicodedata.name(c, None))
for c in
map(chr, range(sys.maxunicode))
if
name.upper() in unicodedata.name(c, '')
)
return matched
def main():
argparser = ArgumentParser()
arggroup = argparser.add_mutually_exclusive_group()
arggroup.add_argument('-n', '--name')
arggroup.add_argument('-l', '--lookup')
args, remainder = argparser.parse_known_args()
# Concatenate leftovers
if remainder and not args.lookup:
_remainder = ''.join(remainder)
try:
args.name += _remainder
except TypeError:
args.name = _remainder
if args.name:
names = name(args.name)
for n in names:
print(*n)
elif args.lookup:
matched = lookup(args.lookup)
for m in matched:
print(*m)
else:
argparser.print_usage()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment