mirror of
https://github.com/jimeh/pylight.git
synced 2026-02-19 01:46:42 +00:00
35 lines
959 B
Python
35 lines
959 B
Python
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')
|