git.fiddlerwoaroof.com
pattern-matcher.lisp
9e44373f
 (defpackage :alimenta%pattern-matcher
   (:use :cl :patmatch :alimenta)
   (:export ))
 (in-package :alimenta%pattern-matcher)
 
 
 (defmethod handle-pattern append ((pattern feed-entity) form &rest args)
   (let ((key->reader '((:title . title)
                        (:link . link)
ac24c1a7
                        (:doc . doc)
                        (:items . items ))))
9e44373f
     (let* ((val-sym (gensym "VAL"))
            (binders (loop for (key binding) on args by #'cddr
dcb293c2
                           for accessor = (cdr (assoc key key->reader))
                           when accessor append
                             `((,binding (,accessor ,val-sym))))))
9e44373f
       `((,val-sym ,form)
         ,@binders))))
 
 (defmethod handle-pattern append ((pattern feed) form &rest args)
   (let ((key->reader '((:author . author)
                        (:items . collection-class:items)
                        (:description . description)
                        (:source-type . source-type)
                        (:feed-link . feed-link))))
     (let* ((val-sym (gensym "VAL"))
            (binders (loop for (key binding) on args by #'cddr
                        for accessor = (cdr (assoc key key->reader))
                        when accessor append
                          `((,binding (,accessor ,val-sym))))))
       `((,val-sym ,form)
         ,@binders))))
 
c80616ec
 (defmethod handle-pattern append ((pattern item) form &rest args)
   (let ((key->reader '((:author . author)
                        (:content . content)
                        (:date . date)
                        (:id . id)
                        (:links . links))))
     (let* ((val-sym (gensym "VAL"))
            (binders (loop for (key binding) on args by #'cddr
                        for accessor = (cdr (assoc key key->reader))
                        when accessor append
                          `((,binding (,accessor ,val-sym))))))
       `((,val-sym ,form)
         ,@binders))))