mirror of
https://github.com/jimeh/pylight.git
synced 2026-02-19 09:56:43 +00:00
organized the code a bit better
This commit is contained in:
32
app.py
32
app.py
@@ -1,15 +1,9 @@
|
|||||||
|
# import libraries
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# import flask
|
|
||||||
from flask import *
|
from flask import *
|
||||||
|
|
||||||
|
# import project relative modules
|
||||||
# import pygments
|
from pylight import *
|
||||||
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
|
# initialize flask
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -25,23 +19,11 @@ def api_root():
|
|||||||
|
|
||||||
@app.route('/api/highlight', methods=['POST'])
|
@app.route('/api/highlight', methods=['POST'])
|
||||||
def api_highlight():
|
def api_highlight():
|
||||||
if 'source' not in request.json:
|
response = pylight(request.json)
|
||||||
return make_response(None, 422)
|
if response:
|
||||||
|
return jsonify(response)
|
||||||
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:
|
else:
|
||||||
lexer = guess_lexer(request.json['source'])
|
return make_response(None, 422)
|
||||||
|
|
||||||
formatter = get_formatter_by_name('html')
|
|
||||||
body = highlight(request.json['source'], lexer, formatter)
|
|
||||||
|
|
||||||
return jsonify({ "lexer": lexer.name, "body": body })
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
34
pylight.py
Normal file
34
pylight.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
from pygments import highlight
|
||||||
|
from pygments.lexers import *
|
||||||
|
from pygments.formatters import get_formatter_by_name
|
||||||
|
|
||||||
|
|
||||||
|
def pylight(args):
|
||||||
|
if 'source' not in args:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
lexer = detect_lexer(args)
|
||||||
|
formatter = detect_formatter(args)
|
||||||
|
return { 'lexer': lexer.name,
|
||||||
|
'body': highlight(args['source'], lexer, formatter) }
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def detect_lexer(args):
|
||||||
|
if 'lang' in args:
|
||||||
|
return get_lexer_by_name(args['lang'])
|
||||||
|
elif 'mimetype' in args:
|
||||||
|
return get_lexer_for_mimetype(args['mimetype'])
|
||||||
|
elif 'filename' in args:
|
||||||
|
return guess_lexer_for_filename(args['filename'],
|
||||||
|
args['source'])
|
||||||
|
else:
|
||||||
|
return guess_lexer(args['source'])
|
||||||
|
|
||||||
|
|
||||||
|
def detect_formatter(args):
|
||||||
|
if 'format' in args:
|
||||||
|
return get_formatter_by_name(args['format'])
|
||||||
|
else:
|
||||||
|
return get_formatter_by_name('html')
|
||||||
Reference in New Issue
Block a user