(defpackage :fwoar.rss-render (:use :cl ) (:export #:summary)) (in-package :fwoar.rss-render) (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)) (plump:parse (spinneret:with-html-string (:div.feed (:section (:h2.title (if-arg-not-nil (plump:decode-entities (alimenta:title feed))))) (:ul.items))))) (defmethod alimenta.render:render-item (item feed (renderer fwoar.rss-reader:feed-reference)) (plump:first-element (plump:parse (spinneret:with-html-string (: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))) :href (format nil "/f/~a/~a" (fwoar.rss-reader::feed-key renderer) (fwoar.rss-reader::id->slug (alimenta:id item))) (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))))))))) (defmethod alimenta.render:add-rendered-item (feed-r item-r (renderer fwoar.rss-reader:feed-reference)) (lquery:$ (inline feed-r) ".items" (append item-r)) feed-r)