mirror of
https://git.zx2c4.com/cgit
synced 2024-11-24 01:18:46 +00:00
dbaee2672b
Place file contents into a single block so that syntax highlighting can be applied in the usual fashion. Place the alternating color bars behind the file contents. Force the default syntax highlighting background to transparent. Signed-off-by: Jeff Smith <whydoubt@gmail.com> Reviewed-by: John Keeping <john@keeping.me.uk>
56 lines
1.7 KiB
Python
Executable File
56 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# This script uses Pygments and Python3. You must have both installed
|
|
# for this to work.
|
|
#
|
|
# http://pygments.org/
|
|
# http://python.org/
|
|
#
|
|
# It may be used with the source-filter or repo.source-filter settings
|
|
# in cgitrc.
|
|
#
|
|
# The following environment variables can be used to retrieve the
|
|
# configuration of the repository for which this script is called:
|
|
# CGIT_REPO_URL ( = repo.url setting )
|
|
# CGIT_REPO_NAME ( = repo.name setting )
|
|
# CGIT_REPO_PATH ( = repo.path setting )
|
|
# CGIT_REPO_OWNER ( = repo.owner setting )
|
|
# CGIT_REPO_DEFBRANCH ( = repo.defbranch setting )
|
|
# CGIT_REPO_SECTION ( = section setting )
|
|
# CGIT_REPO_CLONE_URL ( = repo.clone-url setting )
|
|
|
|
|
|
import sys
|
|
import io
|
|
from pygments import highlight
|
|
from pygments.util import ClassNotFound
|
|
from pygments.lexers import TextLexer
|
|
from pygments.lexers import guess_lexer
|
|
from pygments.lexers import guess_lexer_for_filename
|
|
from pygments.formatters import HtmlFormatter
|
|
|
|
|
|
sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace')
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
|
|
data = sys.stdin.read()
|
|
filename = sys.argv[1]
|
|
formatter = HtmlFormatter(style='pastie', nobackground=True)
|
|
|
|
try:
|
|
lexer = guess_lexer_for_filename(filename, data)
|
|
except ClassNotFound:
|
|
# check if there is any shebang
|
|
if data[0:2] == '#!':
|
|
lexer = guess_lexer(data)
|
|
else:
|
|
lexer = TextLexer()
|
|
except TypeError:
|
|
lexer = TextLexer()
|
|
|
|
# highlight! :-)
|
|
# printout pygments' css definitions as well
|
|
sys.stdout.write('<style>')
|
|
sys.stdout.write(formatter.get_style_defs('.highlight'))
|
|
sys.stdout.write('</style>')
|
|
sys.stdout.write(highlight(data, lexer, formatter, outfile=None))
|