diff options
author | Thomas Pointhuber <thomas.pointhuber@gmx.at> | 2014-12-20 23:33:03 +0100 |
---|---|---|
committer | Thomas Pointhuber <thomas.pointhuber@gmx.at> | 2014-12-20 23:33:03 +0100 |
commit | 7adb17452d8c845f46858b4cebe8198988edfdbc (patch) | |
tree | c067e862d398de12544c48c3eb64e6401a8bb199 /searx/webapp.py | |
parent | 2e41bfcbdbb762be610ff379380ea2201f544edd (diff) | |
download | searxng-7adb17452d8c845f46858b4cebe8198988edfdbc.tar.gz searxng-7adb17452d8c845f46858b4cebe8198988edfdbc.zip |
[enh] add result_templates/code.html
Diffstat (limited to 'searx/webapp.py')
-rw-r--r-- | searx/webapp.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/searx/webapp.py b/searx/webapp.py index 915fb3564..11db1bf2e 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -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'] |