From dlichteblau at common-lisp.net Sat Dec 2 13:21:37 2006 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sat, 2 Dec 2006 08:21:37 -0500 (EST) Subject: [cxml-cvs] CVS cxml/runes Message-ID: <20061202132137.30F73210B9@common-lisp.net> Update of /project/cxml/cvsroot/cxml/runes In directory clnet:/tmp/cvs-serv32067/runes Modified Files: package.lisp ystream.lisp Log Message: - Define CXML:ATTRIBUTE as a generic function, and a method for integers. - Define /UTF8 sinks even on Unicode-aware implementations for backward- compatibility. (Undocumented feature.) --- /project/cxml/cvsroot/cxml/runes/package.lisp 2005/12/30 14:21:46 1.6 +++ /project/cxml/cvsroot/cxml/runes/package.lisp 2006/12/02 13:21:36 1.7 @@ -72,8 +72,13 @@ #:make-octet-stream-ystream #:make-rod-ystream #+rune-is-character #:make-character-stream-ystream - #+rune-is-integer #:make-string-ystream/utf8 - #+rune-is-integer #:make-character-stream-ystream/utf8 + ;; These don't make too much sense on Unicode-enabled, + ;; implementations but for those applications using them anyway, + ;; I have commented out the reader conditionals now: + ;; #+rune-is-integer + #:make-string-ystream/utf8 + ;; #+rune-is-integer + #:make-character-stream-ystream/utf8 #:runes-to-utf8/adjustable-string)) (defpackage :utf8-runes --- /project/cxml/cvsroot/cxml/runes/ystream.lisp 2006/01/23 21:46:15 1.4 +++ /project/cxml/cvsroot/cxml/runes/ystream.lisp 2006/12/02 13:21:36 1.5 @@ -222,7 +222,7 @@ ;;;; CHARACTER-STREAM-YSTREAM/UTF8 -#+rune-is-integer +;; #+rune-is-integer (progn (defstruct (character-stream-ystream/utf8 (:constructor make-character-stream-ystream/utf8 (os-stream)) @@ -239,7 +239,7 @@ ;;;; STRING-YSTREAM/UTF8 -#+rune-is-integer +;; #+rune-is-integer (progn (defstruct (string-ystream/utf8 (:include character-stream-ystream/utf8 From dlichteblau at common-lisp.net Sat Dec 2 13:21:37 2006 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sat, 2 Dec 2006 08:21:37 -0500 (EST) Subject: [cxml-cvs] CVS cxml/xml Message-ID: <20061202132137.B2EA92201E@common-lisp.net> Update of /project/cxml/cvsroot/cxml/xml In directory clnet:/tmp/cvs-serv32067/xml Modified Files: package.lisp unparse.lisp Log Message: - Define CXML:ATTRIBUTE as a generic function, and a method for integers. - Define /UTF8 sinks even on Unicode-aware implementations for backward- compatibility. (Undocumented feature.) --- /project/cxml/cvsroot/cxml/xml/package.lisp 2006/08/20 13:58:31 1.12 +++ /project/cxml/cvsroot/cxml/xml/package.lisp 2006/12/02 13:21:37 1.13 @@ -43,8 +43,11 @@ #:make-rod-sink #+rune-is-character #:make-string-sink #+rune-is-character #:make-character-stream-sink - #-rune-is-character #:make-string-sink/utf8 - #-rune-is-character #:make-character-stream-sink/utf8 + ;; See comment in runes/package.lisp + ;; #-rune-is-character + #:make-string-sink/utf8 + ;; #-rune-is-character + #:make-character-stream-sink/utf8 #:with-xml-output #:with-element --- /project/cxml/cvsroot/cxml/xml/unparse.lisp 2006/08/28 13:41:41 1.11 +++ /project/cxml/cvsroot/cxml/xml/unparse.lisp 2006/12/02 13:21:37 1.12 @@ -95,8 +95,8 @@ :adjustable t :fill-pointer 0)) -;; total haesslich, aber die ystreams will ich im moment eigentlich nicht -;; dokumentieren +;; bisschen unschoen hier die ganze api zu duplizieren, aber die +;; ystreams sind noch undokumentiert (macrolet ((define-maker (make-sink make-ystream &rest args) `(defun ,make-sink (, at args &rest initargs) (apply #'make-instance @@ -110,10 +110,10 @@ #+rune-is-character (define-maker make-character-stream-sink make-character-stream-ystream stream) - #-rune-is-character + ;; #-rune-is-character (define-maker make-string-sink/utf8 make-string-ystream/utf8) - #-rune-is-character + ;; #-rune-is-character (define-maker make-character-stream-sink/utf8 make-character-stream-ystream/utf8 stream)) @@ -539,11 +539,22 @@ (maybe-emit-start-tag) (sax:end-element *sink* nil nil qname)))) -(defun attribute (name value) +(defun attribute-1 (name value) (push (sax:make-attribute :qname (rod name) :value (rod value)) (cdr *current-element*)) value) +(defgeneric attribute (name value)) + +(defmethod attribute (name (value string)) + (attribute-1 name value)) + +(defmethod attribute (name (value null)) + (declare (ignore name))) + +(defmethod attribute (name (value integer)) + (attribute-1 name (write-to-string value))) + (defun cdata (data) (maybe-emit-start-tag) (sax:start-cdata *sink*)