gitsite: render page SXML once
ober
fbd5f2557be297471af1fbe3d0693ea7ee0fcd51
--- a/src/gitsite/views.ss +++ b/src/gitsite/views.ss @@ -7,22 +7,21 @@ (def css-string "body{font-family:system-ui,sans-serif;margin:0;background:#fafafa;color:#222}a{color:#06c;text-decoration:none}a:hover{text-decoration:underline}header.top{display:flex;align-items:center;padding:.6em 1em;border-bottom:1px solid #ddd;background:#f5f5f5}header.top nav a{margin-left:1em}main{max-width:900px;margin:auto;padding:1em}ul.repolist{list-style:none;padding:0}ul.repolist li{padding:.4em 0;border-bottom:1px solid #eee}.desc{color:#666;margin-left:.6em}pre{background:#f5f5f5;padding:1em;overflow:auto}footer{color:#999;padding:1em;border-top:1px solid #eee;margin-top:2em}") (def (page-html title user body) - (let ([tree `(html - (head - (meta (@ (charset "utf-8"))) - (title ,(str title " - gitsite")) - (style ,css-string)) - (body - (header (@ (class "top")) - (a (@ (href "/")) "gitsite") - (nav - (a (@ (href "/")) "home") - ,(if user - '(a (@ (href "/new")) "new repo") - '(a (@ (href "/login")) "login")) - ,(if user - '(a (@ (href "/logout")) "logout") - '(a (@ (href "/register")) "register")))) - (main ,@body) - (footer "gitsite - a tiny forge")))]) - (sxml->html tree))) + `(html + (head + (meta (@ (charset "utf-8"))) + (title ,(str title " - gitsite")) + (style ,css-string)) + (body + (header (@ (class "top")) + (a (@ (href "/")) "gitsite") + (nav + (a (@ (href "/")) "home") + ,(if user + '(a (@ (href "/new")) "new repo") + '(a (@ (href "/login")) "login")) + ,(if user + '(a (@ (href "/logout")) "logout") + '(a (@ (href "/register")) "register")))) + (main ,@body) + (footer "gitsite - a tiny forge"))))