#!/usr/bin/env python3 import pygments from pygments.formatters import HtmlFormatter from pygments.lexers import get_lexer_for_filename from pygments.lexers.special import TextLexer from pygments.util import ClassNotFound from starlette.applications import Starlette from starlette.responses import HTMLResponse from starlette.routing import Route formatter = None async def startup_task(): get_lexer_for_filename('x.txt') global formatter formatter = HtmlFormatter(style='pastie', nobackground=True) async def run_highlight(request): data = await request.body() try: lexer = get_lexer_for_filename(request.query_params['filename'], data) except ClassNotFound: lexer = TextLexer() return HTMLResponse(''.join([ f'', '', pygments.highlight(data, lexer, formatter) ])) app = Starlette( routes=[ Route('/highlight', run_highlight, methods=["POST"]), ], on_startup=[startup_task], )