Files
ad/molodetz/docs_export.py
T

38 lines
1.5 KiB
Python
Raw Normal View History

2026-10-05 09:36:20 +02:00
# 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>"
)