[cxml-cvs] CVS cxml/xml

dlichteblau dlichteblau at common-lisp.net
Sat Dec 2 13:21:37 UTC 2006


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*)




More information about the Cxml-cvs mailing list