38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
# retoor <retoor@molodetz.nl>
|
|
from html import escape
|
|
|
|
from molodetz.docs_api import ordered_groups
|
|
from molodetz.docs_prose import page_source, render_page, visible_pages
|
|
|
|
|
|
def export_markdown(viewer_is_admin):
|
|
parts = ["# Molodetz documentatie", ""]
|
|
for page in visible_pages(viewer_is_admin):
|
|
parts += [page_source(page["slug"]).strip(), ""]
|
|
for group in ordered_groups():
|
|
if group["slug"] == "beheer" and not viewer_is_admin:
|
|
continue
|
|
parts += [f"## API: {group['title']}", "", group["description"], ""]
|
|
for item in group["endpoints"]:
|
|
parts.append(f"- `{item['method']} {item['path']}` ({item['auth']}): {item['title']}")
|
|
parts.append("")
|
|
return "\n".join(parts)
|
|
|
|
|
|
def export_html(viewer_is_admin):
|
|
body = []
|
|
for page in visible_pages(viewer_is_admin):
|
|
body.append(f"<section>{render_page(page['slug'])}</section>")
|
|
for group in ordered_groups():
|
|
if group["slug"] == "beheer" and not viewer_is_admin:
|
|
continue
|
|
items = "".join(
|
|
f"<li><code>{escape(item['method'])} {escape(item['path'])}</code> ({escape(item['auth'])}): {escape(item['title'])}</li>"
|
|
for item in group["endpoints"]
|
|
)
|
|
body.append(f"<section><h2>API: {escape(group['title'])}</h2><ul>{items}</ul></section>")
|
|
return (
|
|
"<!doctype html><html lang=\"nl\"><head><meta charset=\"utf-8\"><title>Molodetz documentatie</title></head>"
|
|
f"<body><h1>Molodetz documentatie</h1>{''.join(body)}</body></html>"
|
|
)
|