X-Git-Url: http://git.kpe.io/?p=lml2.git;a=blobdiff_plain;f=base.lisp;h=407429f6a244ef863f8defc5f7f1ed0067874f99;hp=3105af84ffe03582be33f657d22472d0eebbfdba;hb=de07e23d506452837023fdd31964866cffe96ef1;hpb=3ded0d8fd988868b08511c9f3a90d37c4e9fe983 diff --git a/base.lisp b/base.lisp index 3105af8..407429f 100644 --- a/base.lisp +++ b/base.lisp @@ -7,28 +7,21 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Aug 2002 ;;;; -;;;; $Id: base.lisp,v 1.2 2003/06/20 04:46:54 kevin Exp $ +;;;; $Id$ ;;;; -;;;; This file, part of LML, is Copyright (c) 2002 by Kevin M. Rosenberg +;;;; This file, part of LML2, is Copyright (c) 2000-2003 by Kevin Rosenberg. +;;;; Rights of modification and redistribution are in the LICENSE file. ;;;; -;;;; LML users are granted the rights to distribute and use this software -;;;; as governed by the terms of the GNU General Public License v2 -;;;; (http://www.gnu.org/licenses/gpl.html) ;;;; ************************************************************************* (in-package #:lml2) -(defun reset-indent () - (setq *indent* 0)) - (defun lml-format (str &rest args) (when (streamp *html-stream*) - (when *print-spaces* (indent-spaces *indent* *html-stream*)) (if args - (apply #'format *html-stream* str args) - (write-string str *html-stream*)) - (when *print-spaces* (write-char #\newline *html-stream*)))) + (apply #'format *html-stream* str args) + (write-string str *html-stream*)))) (defun lml-princ (s) (princ s *html-stream*)) @@ -45,30 +38,61 @@ (defun lml-print-date (date) (lml-write-string (date-string date))) -(defmacro xhtml-prologue () - `(progn - (lml-write-string (xml-prologue-string)) +(defun xml-header-stream (stream &key (version "1.0") (standalone :unspecified) + (encoding :unspecified)) + (format stream "" + version + (if (eq standalone :unspecified) + "" + (format nil " standalone=\"~A\"" standalone)) + (if (eq encoding :unspecified) + "" + (format nil " encoding=\"~A\"" encoding)))) + +(defun dtd-prologue (&optional (format :xhtml11) (encoding :iso-8859-1) &key entities) + (ecase format + ((:xhtml :xhtml11 :xhtml10-strict :xhtml10-transitional :xhtml10-frameset :xml) + (lml-write-string +xml-prologue-begin+) + (ecase encoding + (:iso-8859-1 + (lml-write-string "iso-8859-1")) + (:utf-8 + (lml-write-string "UTF-8"))) + (lml-write-string +xml-prologue-end+) (lml-write-char #\newline) - (lml-write-string (xhtml-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) + (case 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+))) + (when entities + (lml-write-char #\space) + (lml-write-char #\[) + (lml-write-char #\Newline) + (lml-write-string entities) + (lml-write-char #\Newline) + (lml-write-char #\])) + (lml-write-char #\>)) + (:html + (lml-write-string +html4-dtd-string+))) + (lml-write-char #\newline)) + + +(defmacro html-file-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) + (lml-file-name ',out-file :output) + :direction :output + :if-exists :supersede) + (dtd-prologue ,format) (html ((:html :xmlns "http://www.w3.org/1999/xhtml") ,@body)))) - (defmacro alink (url desc) `(html @@ -77,5 +101,3 @@ (defmacro alink-c (class url desc) `(html ((:a :class ,class :href ,url) ,desc))) - -(export '(alink alink-c))