#!/usr/bin/env python import os import uuid from flask import Flask, url_for, render_template, send_from_directory, jsonify, make_response from flaskext.markdown import Markdown import markdown import markdown.extensions.fenced_code import markdown.extensions.codehilite import markdown.extensions.toc from markdown.extensions.toc import TocExtension from pygments.formatters import HtmlFormatter from helpers import make_tree, cut_path_tree, cut_filetype_tree, list_files, build_index app = Flask(__name__) Markdown(app) @app.route('/index.json') def index(): searchable = build_index("templates/content", ".md") response = make_response(searchable) response.headers["Content-Type"] = "application/json" #response.headers["Content-Encoding"] = "gzip" response.cache_control.max_age = 420 return response @app.route('/', defaults={'path': 'README'}) @app.route('/.html') def content(path="README"): with open(os.path.join(app.root_path, f'templates/content/{path}.md'), "r") as _f: md_file = _f.read() if not md_file.startswith("[TOC]"): md_file = "[TOC]\n" + md_file md_template_string = markdown.markdown(md_file, extensions=["fenced_code", "codehilite", "toc", TocExtension(toc_class="column column-3", title=""), "mdx_math"], extension_configs={"mdx_math": {"enable_dollar_delimiter": True}}) formatter = HtmlFormatter(style="material", full=True, cssclass="codehilite") css_string = formatter.get_style_defs() md_css_string = "" md_template = md_css_string + md_template_string #return md_templateresponse = make_response(searchable) res = render_template("documentation.html", md_doc=md_template, tree= cut_path_tree( make_tree("templates/content"), "templates/content", ".md") ) response = make_response(res) response.headers["Content-Type"]: "text/html; charset=utf-8" return response @app.route('/favicon.ico') def favicon(): return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico') with app.test_request_context(): print(url_for("content", md_file="README"))