mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
[help] introduce API to parse and render Markdown
This commit is contained in:
parent
532680be67
commit
33ad043218
4 changed files with 23 additions and 15 deletions
|
@ -8,5 +8,6 @@
|
|||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h1>{{page.title}}</h1>
|
||||
{{ page.content | safe }}
|
||||
{% endblock %}
|
||||
|
|
|
@ -8,5 +8,6 @@
|
|||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h1>{{page.title}}</h1>
|
||||
{{ page.content | safe }}
|
||||
{% endblock %}
|
||||
|
|
|
@ -31,7 +31,24 @@ class Template(string.Template):
|
|||
idpattern = '(:?[a-z._:]+)'
|
||||
|
||||
|
||||
def render(app: flask.Flask):
|
||||
def render(markdown: str, variables=Dict[str, str], filename='') -> HelpPage:
|
||||
first_line, markdown = markdown.split('\n', maxsplit=1)
|
||||
assert first_line.startswith('# ')
|
||||
|
||||
try:
|
||||
markdown = Template(markdown).substitute(variables)
|
||||
except KeyError as e:
|
||||
print('[FATAL ERROR] undefined variable ${} in {}'.format(e.args[0], filename))
|
||||
print('available variables are:')
|
||||
for key in variables:
|
||||
print('\t' + key)
|
||||
sys.exit(1)
|
||||
|
||||
content: str = mistletoe.markdown(markdown)
|
||||
return HelpPage(title=first_line.strip('# '), content=content)
|
||||
|
||||
|
||||
def initialize(app: flask.Flask):
|
||||
"""
|
||||
Renders the user documentation. Must be called after all Flask routes have been
|
||||
registered, because the documentation might try to link to them with Flask's `url_for`.
|
||||
|
@ -57,21 +74,10 @@ def render(app: flask.Flask):
|
|||
for pagename in _TOC:
|
||||
filename = 'help/en/' + pagename + '.md'
|
||||
file_content = pkg_resources.resource_string(__name__, filename).decode()
|
||||
try:
|
||||
markdown = Template(file_content).substitute(variables)
|
||||
except KeyError as e:
|
||||
print('[FATAL ERROR] undefined variable ${} in {}'.format(e.args[0], filename))
|
||||
print('available variables are:')
|
||||
for key in variables:
|
||||
print('\t' + key)
|
||||
sys.exit(1)
|
||||
assert file_content.startswith('# ')
|
||||
title = file_content.split('\n', maxsplit=1)[0].strip('# ')
|
||||
content: str = mistletoe.markdown(markdown)
|
||||
|
||||
if pagename == 'about':
|
||||
try:
|
||||
content += pkg_resources.resource_string(__name__, 'templates/__common__/aboutextend.html').decode()
|
||||
file_content += pkg_resources.resource_string(__name__, 'templates/__common__/aboutextend.html').decode()
|
||||
except FileNotFoundError:
|
||||
pass
|
||||
PAGES[pagename] = HelpPage(title=title, content=content)
|
||||
PAGES[pagename] = render(file_content, variables, filename=filename)
|
||||
|
|
|
@ -1391,7 +1391,7 @@ werkzeug_reloader = flask_run_development or (searx_debug and __name__ == "__mai
|
|||
if not werkzeug_reloader or (werkzeug_reloader and os.environ.get("WERKZEUG_RUN_MAIN") == "true"):
|
||||
plugin_initialize(app)
|
||||
search_initialize(enable_checker=True, check_network=True, enable_metrics=settings['general']['enable_metrics'])
|
||||
user_help.render(app)
|
||||
user_help.initialize(app)
|
||||
|
||||
|
||||
def run():
|
||||
|
|
Loading…
Add table
Reference in a new issue