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:
parent
08e1e58f1f
commit
cee672f117
1 changed files with 23 additions and 15 deletions
|
@ -343,22 +343,30 @@
|
|||
(tags (assq-ref index 'tags))
|
||||
(posts (assq-ref index 'posts))
|
||||
(master (assq-ref index 'master)))
|
||||
(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)))))
|
||||
(define include?
|
||||
(if (pair? with)
|
||||
(fold (lambda (tag cont)
|
||||
(let ((posts (hash-ref tags tag '())))
|
||||
(lambda (post)
|
||||
(and (member (post-key post) posts)
|
||||
(or (member (post-key post) posts)
|
||||
(cont post)))))
|
||||
(lambda (post)
|
||||
(and (post-published? post)
|
||||
post))
|
||||
(lambda (post) #f)
|
||||
with)
|
||||
without)
|
||||
(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 (lambda (post)
|
||||
(and (include? post) (not (exclude? post))
|
||||
(post-published? post)
|
||||
post))
|
||||
posts
|
||||
10))))
|
||||
|
|
Loading…
Reference in a new issue