Author: hhubner Date: Thu Jan 31 07:53:36 2008 New Revision: 2434
Modified: branches/trunk-reorg/bknr/web/src/packages.lisp branches/trunk-reorg/bknr/web/src/rss/rss.lisp branches/trunk-reorg/bknr/web/src/web/handlers.lisp branches/trunk-reorg/bknr/web/src/web/rss-handlers.lisp branches/trunk-reorg/bknr/web/src/web/templates.lisp Log: Fix some RSS related problems. Extend RSS API so that encoded content can be generated. Begin removing all code that depends on :rune-is-integer. Raymond Toy says that he'll add Unicode support to CMUCL, and I'm sick of the string-related kludging.
Modified: branches/trunk-reorg/bknr/web/src/packages.lisp ============================================================================== --- branches/trunk-reorg/bknr/web/src/packages.lisp (original) +++ branches/trunk-reorg/bknr/web/src/packages.lisp Thu Jan 31 07:53:36 2008 @@ -65,6 +65,7 @@ #:rss-item-enclosure #:rss-item-guid #:rss-item-source + #:rss-item-encoded-content
;; textinput #:rss-textinput
Modified: branches/trunk-reorg/bknr/web/src/rss/rss.lisp ============================================================================== --- branches/trunk-reorg/bknr/web/src/rss/rss.lisp (original) +++ branches/trunk-reorg/bknr/web/src/rss/rss.lisp Thu Jan 31 07:53:36 2008 @@ -74,6 +74,7 @@ (with-xml-output (make-character-stream-sink stream) (with-element "rss" (attribute "version" "2.0") + (attribute* "xmlns" "content" "http://purl.org/rss/1.0/modules/content/") (with-element "channel" (dolist (slot '(title link description)) (render-mandatory-element channel slot)) @@ -145,7 +146,10 @@ (with-element "description" (cdata it))) (with-element "pubDate" - (text (format-date-time (rss-item-pub-date item) :mail-style t))))) + (text (format-date-time (rss-item-pub-date item) :mail-style t))) + (aif (rss-item-encoded-content item) + (with-element* ("content" "encoded" ) + (cdata it)))))
;; All items present on an RSS stream can implement the access ;; methods below. @@ -169,4 +173,8 @@ (defmethod rss-item-enclosure (item)) (defmethod rss-item-guid (item)) (defmethod rss-item-source (item)) - +(defgeneric rss-item-encoded-content (item) + (:documentation "Return the content for ITEM in encoded (usually HTML) form as string.") + (:method (item) + (declare (ignore item)) + nil))
Modified: branches/trunk-reorg/bknr/web/src/web/handlers.lisp ============================================================================== --- branches/trunk-reorg/bknr/web/src/web/handlers.lisp (original) +++ branches/trunk-reorg/bknr/web/src/web/handlers.lisp Thu Jan 31 07:53:36 2008 @@ -427,9 +427,7 @@ (defmethod handle :around ((handler xml-handler)) (with-http-response (:content-type "text/xml") (with-http-body () - (let ((sink (#-rune-is-integer cxml:make-character-stream-sink - #+rune-is-integer cxml:make-character-stream-sink/utf8 - *html-stream* :canonical t)) + (let ((sink (cxml:make-character-stream-sink *html-stream* :canonical t)) (style-path (or (query-param "style") (xml-handler-style-path handler)))) (cxml:with-xml-output sink
Modified: branches/trunk-reorg/bknr/web/src/web/rss-handlers.lisp ============================================================================== --- branches/trunk-reorg/bknr/web/src/web/rss-handlers.lisp (original) +++ branches/trunk-reorg/bknr/web/src/web/rss-handlers.lisp Thu Jan 31 07:53:36 2008 @@ -11,5 +11,4 @@ (defmethod handle-object ((handler rss-handler) (channel bknr.rss:rss-channel)) (with-http-response (:content-type "text/xml; charset=UTF-8") (with-http-body () - (html (:princ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>") - (bknr.rss:rss-channel-xml channel *html-stream*))))) + (bknr.rss:rss-channel-xml channel *html-stream*))))
Modified: branches/trunk-reorg/bknr/web/src/web/templates.lisp ============================================================================== --- branches/trunk-reorg/bknr/web/src/web/templates.lisp (original) +++ branches/trunk-reorg/bknr/web/src/web/templates.lisp Thu Jan 31 07:53:36 2008 @@ -103,8 +103,7 @@ (defun emit-template (expander stream node env) (let* ((*template-expander* expander) (*template-env* env) - (sink (#-rune-is-integer cxml:make-character-stream-sink #+rune-is-integer cxml:make-character-stream-sink/utf8 - stream :canonical nil)) + (sink (cxml:make-character-stream-sink stream :canonical nil)) (*html-sink* (cxml:make-recoder sink #'cxml::utf8-string-to-rod))) (if (node-attribute node "suppress-xml-headers") (emit-template-node node)