January 11, 2008
Including static HTML snippets in Weblocks
Generating your HTML directly in Lisp with CL-WHO (or some other HTML generation toolkit) is effective.
However, sometimes you need to include HTML from external sources, for example when you want HTML writers to provide page elements.
Here’s a widget for Weblocks that will create a widget from static HTML:
(in-package :weblocks) (export '(static-html make-static-html-from-file with-widget-header render-widget-body)) (defwidget static-html (widget) ((html :type string :accessor html :initarg :html :initform "")) (:documentation "Represents a piece of static HTML body mark-up.")) (defmethod with-widget-header ((widget static-html) body-fn &rest args &key prewidget-body-fn postwidget-body-fn &allow-other-keys) (apply body-fn widget args)) (defmethod render-widget-body ((widget static-html) &rest args) (format *weblocks-output-stream* "~A~_" (html widget))) (defun make-static-html-from-file (file) "Create a static-html widget representing the mark-up in “file”." (with-open-file (input file :direction :input) (let ((data (make-string (file-length input)))) (read-sequence data input) (make-instance 'static-html :html data))))
The Lisp paste is at http://paste.lisp.org/display/54023.
Comments(3)