;;;; pages.lisp -- html generation functions for dnd (in-package :dnd) (defmacro with-page ((&key title) &body body) `(with-html-string (:doctype) (:html (:head (:title ,title)) (:body ,@body)))) (defun godess-shrine () (with-page (:title "A Sacred Shrine") (:header (:h1 "Pray and become a hero...")) (:form :method "POST" :action "/godess-shrine" (:label :for "NAME" "Enter the epithet by which the ages shall know thy hero:") (:input :name "NAME") (:button :type "submit" "Pray To The Goddess")))) (defun doorkeeper (&key (message "Wot's yer name 'ero?")) (with-page (:title "Tavern Door") (:h1 message) (:form :method "POST" :action "/tavern-door" (:label :for "NAME" "Thy Hero's Appelation:") (:input :name "NAME") (:button :type "submit" "Announce Thyself")) (:h2 "Eh? Ye need to birth a new hero?") (:a :href "/godess-shrine" "Follow me..."))) (defun tavern (hero) (with-page (:title "A Bustling Tavern") (:h1 "Aye! Welcome " (hero-name hero))))