klacks:get-attribute; dribbling source fix; FAQ

This commit is contained in:
dlichteblau
2007-05-01 18:21:40 +00:00
parent b8ba07a919
commit dd833309bf
8 changed files with 258 additions and 22 deletions

View File

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

View File

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

View File

@ -37,6 +37,7 @@
#:map-attributes
#:list-attributes
#:get-attribute
#:current-uri
#:current-lname
#:current-qname

View File

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