summaryrefslogtreecommitdiff
path: root/searx/webapp.py
diff options
context:
space:
mode:
authorThomas Pointhuber <thomas.pointhuber@gmx.at>2014-12-20 23:33:03 +0100
committerThomas Pointhuber <thomas.pointhuber@gmx.at>2014-12-20 23:33:03 +0100
commit7adb17452d8c845f46858b4cebe8198988edfdbc (patch)
treec067e862d398de12544c48c3eb64e6401a8bb199 /searx/webapp.py
parent2e41bfcbdbb762be610ff379380ea2201f544edd (diff)
downloadsearxng-7adb17452d8c845f46858b4cebe8198988edfdbc.tar.gz
searxng-7adb17452d8c845f46858b4cebe8198988edfdbc.zip
[enh] add result_templates/code.html
Diffstat (limited to 'searx/webapp.py')
-rw-r--r--searx/webapp.py46
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']