summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--tekuti/page.scm38
1 files changed, 23 insertions, 15 deletions
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))))