#!/usr/bin/env python3 import asyncio from aiohttp import web from charfinder import UnicodeNameIndex PAGE_TPL = ''' Charserver

Examples: {links}

{message}


{result}
  
''' CONTENT_TYPE = 'text/html; charset=UTF-8' EXAMPLE_WORDS = ('chess cat circled Malayalam digit Roman face Ethiopic' ' black mark symbol dot operator Braille hexagram').split() LINK_TPL = '{0}' index = None # a UnicodeNameIndex instance @asyncio.coroutine def handle(request): query = request.GET.get('query', '') print('Query: {!r}'.format(query)) if query: lines = list(index.find_descriptions(query)) res = '\n'.join(lines) plural = 'es' if len(lines) > 1 else '' msg = '{} match{} for {!r}'.format(len(lines), plural, query) else: lines = [] res = '' msg = 'Type words describing characters.' links = ', '.join(LINK_TPL.format(word) for word in sorted(EXAMPLE_WORDS, key=str.upper)) text = PAGE_TPL.format(query=query, result=res, message=msg, links=links) return web.Response(content_type=CONTENT_TYPE, text=text) @asyncio.coroutine def init(loop): app = web.Application(loop=loop) app.router.add_route('GET', '/', handle) server = yield from loop.create_server(app.make_handler(), '127.0.0.1', 8080) host = server.sockets[0].getsockname() print('Serving on {}. Hit CTRL-C to stop.'.format(host)) def main(): loop = asyncio.get_event_loop() loop.run_until_complete(init(loop)) loop.run_forever() if __name__ == '__main__': index = UnicodeNameIndex() main()