Update of /project/cxml/cvsroot/cxml/klacks In directory clnet:/tmp/cvs-serv20218/klacks
Modified Files: klacks-impl.lisp klacks.lisp package.lisp tap-source.lisp Log Message: klacks:get-attribute; dribbling source fix; FAQ
--- /project/cxml/cvsroot/cxml/klacks/klacks-impl.lisp 2007/04/22 13:23:55 1.8 +++ /project/cxml/cvsroot/cxml/klacks/klacks-impl.lisp 2007/05/01 18:21:41 1.9 @@ -102,6 +102,13 @@ (sax:attribute-value a) (sax:attribute-specified-p a))))
+(defmethod klacks:get-attribute + ((source cxml-source) lname &optional uri) + (dolist (a (slot-value source 'current-attributes)) + (when (and (equal (sax:attribute-local-name a) lname) + (equal (sax:attribute-namespace-uri a) uri)) + (return (sax:attribute-value a))))) + (defmethod klacks:list-attributes ((source cxml-source)) (slot-value source 'current-attributes))
--- /project/cxml/cvsroot/cxml/klacks/klacks.lisp 2007/04/22 13:23:55 1.7 +++ /project/cxml/cvsroot/cxml/klacks/klacks.lisp 2007/05/01 18:21:41 1.8 @@ -34,13 +34,13 @@
(defgeneric klacks:map-attributes (fn source)) (defgeneric klacks:list-attributes (source)) +(defgeneric klacks:get-attribute (source lname &optional uri)) ;;;(defgeneric klacks:current-uri (source)) ;;;(defgeneric klacks:current-lname (source)) ;;;(defgeneric klacks:current-qname (source)) ;;;(defgeneric klacks:current-characters (source)) (defgeneric klacks:current-cdata-section-p (source)) (defgeneric klacks:map-current-namespace-declarations (fn source)) -(defgeneric klacks:map-previous-namespace-declarations (fn source))
(defgeneric klacks:current-line-number (source)) (defgeneric klacks:current-column-number (source)) --- /project/cxml/cvsroot/cxml/klacks/package.lisp 2007/04/22 13:23:55 1.5 +++ /project/cxml/cvsroot/cxml/klacks/package.lisp 2007/05/01 18:21:41 1.6 @@ -37,6 +37,7 @@
#:map-attributes #:list-attributes + #:get-attribute #:current-uri #:current-lname #:current-qname --- /project/cxml/cvsroot/cxml/klacks/tap-source.lisp 2007/04/22 13:23:55 1.1 +++ /project/cxml/cvsroot/cxml/klacks/tap-source.lisp 2007/05/01 18:21:41 1.2 @@ -26,7 +26,8 @@ (defclass klacks:tapping-source (klacks:source) ((upstream-source :initarg :upstream-source :accessor upstream-source) (dribble-handler :initarg :dribble-handler :accessor dribble-handler) - (seen-event-p :initform nil :accessor seen-event-p))) + (seen-event-p :initform nil :accessor seen-event-p) + (document-done-p :initform nil :accessor document-done-p)))
(defmethod initialize-instance :after ((instance klacks:tapping-source) &key) (let ((s-p (make-instance 'klacksax :source (upstream-source instance)))) @@ -36,7 +37,9 @@ ;;; event dribbling
(defun maybe-dribble (source) - (unless (seen-event-p source) + (unless (or (seen-event-p source) (document-done-p source)) + (when (eq (klacks:peek (upstream-source source)) :end-document) + (setf (document-done-p source) t)) (klacks:serialize-event (upstream-source source) (dribble-handler source) :consume nil)