From d6d19173e4f6bab23d9dc7c4ccde21fd72169c8f Mon Sep 17 00:00:00 2001 From: David Lichteblau Date: Sat, 28 Apr 2007 23:28:52 +0200 Subject: [PATCH] open-start-tag\'-cache close-start-tag\'-cache end-tag\'-cache --- validate.lisp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/validate.lisp b/validate.lisp index d5f617a..f573b32 100644 --- a/validate.lisp +++ b/validate.lisp @@ -125,7 +125,12 @@ ((current-pattern :initarg :current-pattern :accessor current-pattern) (after-start-tag-p :accessor after-start-tag-p) (pending-text-node :initform nil :accessor pending-text-node) - (registratur :initarg :registratur :accessor registratur))) + (registratur :initarg :registratur :accessor registratur) + (open-start-tag\'-cache :initform (make-hash-table :test 'equal) + :reader open-start-tag\'-cache) + (close-start-tag\'-cache :initform (make-hash-table) + :reader close-start-tag\'-cache) + (end-tag\'-cache :initform (make-hash-table) :reader end-tag\'-cache))) (defun advance (hsx pattern message) (when (typep pattern 'not-allowed) @@ -448,6 +453,11 @@ (defgeneric open-start-tag\' (handler pattern uri lname)) +(defmethod open-start-tag\' :around (hsx (pattern pattern) uri lname) + (ensuref (list pattern uri lname) + (open-start-tag\'-cache hsx) + (call-next-method))) + (defmethod open-start-tag\' (hsx (pattern choice) uri lname) (intern-choice hsx (open-start-tag\' hsx (pattern-a pattern) uri lname) @@ -566,6 +576,9 @@ (defgeneric close-start-tag\' (handler pattern)) +(defmethod close-start-tag\' :around (hsx (pattern pattern)) + (ensuref pattern (close-start-tag\'-cache hsx) (call-next-method))) + (defmethod close-start-tag\' (hsx (pattern after)) (intern-after hsx (close-start-tag\' hsx (pattern-a pattern)) @@ -602,6 +615,9 @@ (defgeneric end-tag\' (handler pattern)) +(defmethod end-tag\' :around (hsx (pattern pattern)) + (ensuref pattern (end-tag\'-cache hsx) (call-next-method))) + (defmethod end-tag\' (hsx (pattern choice)) (intern-choice hsx (end-tag\' hsx (pattern-a pattern)) -- 2.11.4.GIT