1 (in-package #:oh-ducks.traversal) 2 3 (defmethod unify::occurs-in-p ((var symbol) (pat chtml:pt) env) 4 (declare (ignore var pat env)) 5 nil) 6 7 ;;; general accessors 8 9 (defmethod element-children ((element chtml:pt)) 10 (remove-if (compose (rcurry #'member '(:pcdata :comment) :test #'eq) #'chtml:pt-name) 11 (chtml:pt-children element))) 12 13 (defmethod element-parent ((element chtml:pt)) 14 (chtml:pt-parent element)) 15 16 (defmethod element-attribute ((element-attribute symbol) (element chtml:pt)) 17 (getf (chtml:pt-attrs element) element-attribute)) 18 (defmethod element-attribute ((element-attribute string) (element chtml:pt)) 19 (element-attribute (intern (string-upcase element-attribute) :keyword) element)) 20 21 (defmethod element-type ((element chtml:pt)) 22 (chtml:pt-name element)) 23 24 (defmethod element-content ((element chtml:pt)) 25 (mapcar (lambda (node) 26 (cond 27 ((eq :pcdata (chtml:pt-name node)) 28 (chtml:pt-attrs node)) 29 (t node))) 30 (remove-if (curry #'eq :comment) 31 (chtml:pt-children element) 32 :key #'chtml:pt-name)))