1
0
Fork 0

multiple with query args add tags to the set

* tekuti/page.scm (page-feed-atom): Reimplement more clearly, and give
  "with" inclusionary meaning.
This commit is contained in:
Andy Wingo 2011-04-25 20:30:57 +02:00
parent 08e1e58f1f
commit cee672f117

View file

@ -343,22 +343,30 @@
(tags (assq-ref index 'tags)) (tags (assq-ref index 'tags))
(posts (assq-ref index 'posts)) (posts (assq-ref index 'posts))
(master (assq-ref index 'master))) (master (assq-ref index 'master)))
(define include?
(if (pair? with)
(fold (lambda (tag cont)
(let ((posts (hash-ref tags tag '())))
(lambda (post)
(or (member (post-key post) posts)
(cont post)))))
(lambda (post) #f)
with)
(lambda (post) #t)))
(define exclude?
(fold (lambda (tag cont)
(let ((posts (hash-ref tags tag '())))
(lambda (post)
(or (member (post-key post) posts)
(cont post)))))
(lambda (post) #f)
without))
(atom-feed-from-posts (atom-feed-from-posts
request body index request body index
(filter-mapn (fold (lambda (tag cont) (filter-mapn (lambda (post)
(let ((posts (hash-ref tags tag '()))) (and (include? post) (not (exclude? post))
(lambda (post) (post-published? post)
(and (not (member (post-key post) posts)) post))
(cont post)))))
(fold (lambda (tag cont)
(let ((posts (hash-ref tags tag '())))
(lambda (post)
(and (member (post-key post) posts)
(cont post)))))
(lambda (post)
(and (post-published? post)
post))
with)
without)
posts posts
10)))) 10))))