mirror of
https://github.com/searxng/searxng.git
synced 2025-07-12 15:59:21 +02:00
[enh] add result_templates/code.html
This commit is contained in:
parent
2e41bfcbdb
commit
7adb17452d
16 changed files with 352 additions and 1036 deletions
|
@ -33,6 +33,9 @@ from flask import (
|
|||
redirect, send_from_directory
|
||||
)
|
||||
from flask.ext.babel import Babel, gettext, format_date
|
||||
from pygments import highlight
|
||||
from pygments.lexers import get_lexer_by_name
|
||||
from pygments.formatters import HtmlFormatter
|
||||
from searx import settings, searx_dir
|
||||
from searx.engines import (
|
||||
categories, engines, get_engines_stats, engine_shortcuts
|
||||
|
@ -90,6 +93,49 @@ def get_locale():
|
|||
return locale
|
||||
|
||||
|
||||
# code-highlighter
|
||||
@app.template_filter('code_highlighter')
|
||||
def code_highlighter(codelines, language=None):
|
||||
if not language:
|
||||
language = 'text'
|
||||
|
||||
# find lexer by programing language
|
||||
lexer = get_lexer_by_name(language, stripall=True)
|
||||
|
||||
html_code = ''
|
||||
tmp_code = ''
|
||||
last_line = None
|
||||
|
||||
# parse lines
|
||||
for line, code in codelines:
|
||||
if not last_line:
|
||||
line_code_start = line
|
||||
|
||||
# new codeblock is detected
|
||||
if last_line != None and\
|
||||
last_line +1 != line:
|
||||
|
||||
# highlight last codepart
|
||||
formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start)
|
||||
html_code = html_code + highlight(tmp_code, lexer, formatter)
|
||||
|
||||
# reset conditions for next codepart
|
||||
tmp_code = ''
|
||||
line_code_start = line
|
||||
|
||||
# add codepart
|
||||
tmp_code += code + '\n'
|
||||
|
||||
# update line
|
||||
last_line = line
|
||||
|
||||
# highlight last codepart
|
||||
formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start)
|
||||
html_code = html_code + highlight(tmp_code, lexer, formatter)
|
||||
|
||||
return html_code
|
||||
|
||||
|
||||
def get_base_url():
|
||||
if settings['server']['base_url']:
|
||||
hostname = settings['server']['base_url']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue