organized the code a bit better

This commit is contained in:
2011-12-27 03:12:35 +00:00
parent de2b47d111
commit 1d81040ecf
2 changed files with 41 additions and 25 deletions

32
app.py
View File

@@ -1,15 +1,9 @@
# import libraries
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
# import project relative modules
from pylight import *
# initialize flask
app = Flask(__name__)
@@ -25,23 +19,11 @@ def api_root():
@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'])
response = pylight(request.json)
if response:
return jsonify(response)
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 })
return make_response(None, 422)
if __name__ == '__main__':

34
pylight.py Normal file
View 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')