git.fiddlerwoaroof.com
rss-render.lisp
6131cd63
 (defpackage :fwoar.rss-render
   (:use :cl )
   (:export
    #:summary))
 (in-package :fwoar.rss-render)
 
aa626761
 (defmacro if-arg-not-nil ((op arg))
   (alexandria:once-only (arg)
     `(when ,arg
        (,op ,arg))))
 
 (defmethod alimenta.render:render-feed ((feed alimenta.rss:rss-feed) (renderer fwoar.rss-reader:feed-reference))
   (plump:parse
    (spinneret:with-html-string
      (:div.feed
       (:section
        (:h2.title (if-arg-not-nil
                       (plump:decode-entities
                        (alimenta:title feed))))
        (:p.description (if-arg-not-nil
                            (plump:decode-entities
                             (alimenta:description feed)))))
       (:ul.items)))))
 
 (defmethod alimenta.render:render-feed ((feed alimenta.atom::atom-feed) (renderer fwoar.rss-reader:feed-reference))
6131cd63
   (plump:parse
    (spinneret:with-html-string
      (:div.feed
       (:section
aa626761
        (:h2.title (if-arg-not-nil
                       (plump:decode-entities
                        (alimenta:title feed)))))
6131cd63
       (:ul.items)))))
 
aa626761
 (defmethod alimenta.render:render-item (item feed (renderer fwoar.rss-reader:feed-reference))
6131cd63
   (plump:first-element
    (plump:parse
     (spinneret:with-html-string
46f06681
       (:li (:a :data-ic-push-url "true"
                :data-ic-get-from (format nil "/f/~a/~a"
                                          (fwoar.rss-reader::feed-key renderer)
                                          (fwoar.rss-reader::id->slug (alimenta:id item)))
8fb5d955
                :href (format nil "/f/~a/~a"
                              (fwoar.rss-reader::feed-key renderer)
                              (fwoar.rss-reader::id->slug (alimenta:id item)))
46f06681
                (plump:decode-entities
                 (alimenta:title item)))
            (:p.description
             (let ((description (fwoar.rss-reader:prepare-feed-item-description renderer item)))
               (when description
                 (plump:decode-entities
                  description)))))))))
6131cd63
 
aa626761
 (defmethod alimenta.render:add-rendered-item (feed-r item-r (renderer fwoar.rss-reader:feed-reference))
6131cd63
   (lquery:$
     (inline feed-r)
     ".items"
     (append item-r))
   feed-r)