source: main/inst.lisp

Last change on this file was main,1, checked in by David Owen <dsowen@…>, 18 years ago

First version.

File size: 1.3 KB
Line 
1#|
2Copyright (C) 2008  David Owen <dsowen@fugue88.ws>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU Lesser Public License as published by
6the Free Software Foundation, either version 3 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12GNU Lesser Public License for more details.
13
14You should have received a copy of the GNU Lesser Public License
15along with this program.  If not, see <http://www.gnu.org/licenses/>.
16|#
17
18(defpackage #:dso-simple-template-inst
19  (:use #:cl)
20  (:import-from #:dso-simple-template-env #:env-value)
21  (:import-from #:dso-simple-template-templ #:body-text #:expression #:parts)
22  (:export #:instantiate-template))
23
24(in-package #:dso-simple-template-inst)
25
26
27
28(defgeneric instantiate-template (template env &optional stream)
29  (:method (template env &optional (stream *standard-output*))
30    (dolist (part (parts template))
31      (destructuring-bind (type . dat) part
32        (ecase type
33          (body-text
34           (write-string dat stream))
35          (expression
36           (format stream "~A" (env-value env dat ""))))))))
Note: See TracBrowser for help on using the repository browser.