From: Drew Crampsie Date: Tue, 8 Nov 2005 06:41:53 +0000 (-0800) Subject: added a covert-newlines-p in the text slot presentation. X-Git-Url: https://git.hcoop.net/clinton/lisp-on-lines.git/commitdiff_plain/4c416fefabdd2bb89c83e3f5d3329dd6441d69db?ds=sidebyside added a covert-newlines-p in the text slot presentation. darcs-hash:20051108064153-5417e-96ca5041423b6ff00a79a0204ba98485650a57cd.gz --- diff --git a/src/slot-presentations.lisp b/src/slot-presentations.lisp index 4dcbecc..ceb27ab 100644 --- a/src/slot-presentations.lisp +++ b/src/slot-presentations.lisp @@ -16,10 +16,24 @@ (defslot-presentation text-slot-presentation () ((rows :initarg :rows :accessor rows :initform 5) (columns :initarg :columns :accessor columns :initform 40) - (escape-html-p :initarg :escape-html-p :accessor escape-html-p :initform nil)) + (escape-html-p :initarg :escape-html-p :accessor escape-html-p :initform nil) + (convert-newlines-p :initarg :convert-newlines-p :accessor convert-newlines-p :initform nil)) (:type-name text)) (defmethod present-slot ((slot text-slot-presentation) instance) + (flet ((maybe-convert-newline-and-escape-html-then-print () + (let ((string (if (convert-newlines-p slot) + (with-output-to-string (new-string) + (with-input-from-string + (s (presentation-slot-value slot instance)) + (loop for line = (read-line s nil) + while line + do (format new-string "~A~A" line "
")))) + (presentation-slot-value slot instance)))) + (if (escape-html-p slot) + (<:as-html string) + (<:as-is string))))) + (if (editablep slot) (