git.fiddlerwoaroof.com
discovery.lisp
16cdb16d
 (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))))