From cee672f11721101ba3c03f8397691177a404c325 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 25 Apr 2011 20:30:57 +0200 Subject: multiple with query args add tags to the set * tekuti/page.scm (page-feed-atom): Reimplement more clearly, and give "with" inclusionary meaning. --- tekuti/page.scm | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'tekuti') diff --git a/tekuti/page.scm b/tekuti/page.scm index dd3cc97..182ea02 100644 --- a/tekuti/page.scm +++ b/tekuti/page.scm @@ -343,22 +343,30 @@ (tags (assq-ref index 'tags)) (posts (assq-ref index 'posts)) (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 request body index - (filter-mapn (fold (lambda (tag cont) - (let ((posts (hash-ref tags tag '()))) - (lambda (post) - (and (not (member (post-key post) posts)) - (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) + (filter-mapn (lambda (post) + (and (include? post) (not (exclude? post)) + (post-published? post) + post)) posts 10)))) -- cgit v1.2.3-54-g00ecf