r5177: *** empty log message ***
[lml2.git] / base.lisp
index 3105af84ffe03582be33f657d22472d0eebbfdba..233d6ee685bb71ee6306f7fd5c01b074f13f6362 100644 (file)
--- a/base.lisp
+++ b/base.lisp
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Aug 2002
 ;;;;
-;;;; $Id: base.lisp,v 1.2 2003/06/20 04:46:54 kevin Exp $
+;;;; $Id: base.lisp,v 1.3 2003/06/23 20:37:43 kevin Exp $
 ;;;;
 ;;;; This file, part of LML, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
 (defun lml-print-date (date)
   (lml-write-string (date-string date)))
 
-(defmacro xhtml-prologue ()
-  `(progn
-     (lml-write-string (xml-prologue-string))
-     (lml-write-char #\newline)
-     (lml-write-string (xhtml-prologue-string))
+(defun html-prologue (&optional (format :xhtml11))
+  (case format
+    ((:xhtml :xhtml11 :xhtml10-strict :xhtml10-transitional :xhtml10-frameset)
+     (lml-write-string +xml-prologue-string+)
      (lml-write-char #\newline)))
-
-(defmacro print-page (title &body body)
-  `(html
-    (:head
-     (:title (:princ ,title)))
-    (:body ,@body)))
-
-(defmacro page (out-file &body body)
+  (ecase format
+    ((:xhtml11 :xhtml)
+     (lml-write-string +xhtml11-dtd-string+))
+    (:xhtml10-strict
+     (lml-write-string +xhtml10-strict-dtd-string+))
+    (:xhtml10-transitional
+     (lml-write-string +xhtml10-transitional-dtd-string+))
+    (:xhtml10-frameset
+     (lml-write-string +xhtml10-frameset-dtd-string+))
+    (:html
+     (lml-write-string +html4-dtd-string+)))
+  (lml-write-char #\newline))
+
+
+(defmacro page ((out-file &key (format :xhtml11))
+               &body body)
   `(with-open-file (*html-stream*
                    (lml-file-name ,out-file :output)
                    :direction :output
                    :if-exists :supersede)
-     (xhtml-prologue)
+     (html-prologue ,format)
      (html
       ((:html :xmlns "http://www.w3.org/1999/xhtml")
        ,@body))))
@@ -77,5 +84,3 @@
 (defmacro alink-c (class url desc)
   `(html
     ((:a :class ,class :href ,url) ,desc)))
-
-(export '(alink alink-c))