(in-package :alimenta.discover) (define-lquery-function get-alternates (node) ($ (inline node) "link[rel=alternate]" (combine (attr "type") (attr "href")))) (defun transform-nodes (feed-info-nodes) (map 'list (lambda (x) (cons (make-keyword (string-upcase (car x))) (cadr x))) feed-info-nodes)) (defgeneric discover-feed (doc)) (defmethod discover-feed ((doc string)) (transform-nodes ($ (initialize doc) (get-alternates) (node)))) (defmethod discover-feed ((doc plump:node)) (transform-nodes ($ (inline doc) (get-alternates) (node))))