Files
pylight/app.py

51 lines
1.4 KiB
Python

import os
# import flask
from flask import *
# import pygments
from pygments import highlight
from pygments.lexers import (get_lexer_by_name, get_lexer_for_filename,
get_lexer_for_mimetype, guess_lexer_for_filename,
guess_lexer)
from pygments.formatters import get_formatter_by_name
# initialize flask
app = Flask(__name__)
# Routes
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/api')
def api_root():
return jsonify(version='0.0.1')
@app.route('/api/highlight', methods=['POST'])
def api_highlight():
if 'source' not in request.json:
return make_response(None, 422)
if 'lang' in request.json:
lexer = get_lexer_by_name(request.json['lang'])
elif 'mimetype' in request.json:
lexer = get_lexer_for_mimetype(request.json['mimetype'])
elif 'filename' in request.json:
lexer = guess_lexer_for_filename(request.json['filename'],
request.json['source'])
else:
lexer = guess_lexer(request.json['source'])
formatter = get_formatter_by_name('html')
body = highlight(request.json['source'], lexer, formatter)
return jsonify({ "lexer": lexer.name, "body": body })
if __name__ == '__main__':
port = int(os.environ.get('PORT', 5000))
use_debug = os.environ.get('FLASK_ENV', 'development') != 'production'
app.run(host='0.0.0.0', port=port, debug=use_debug)