Author: hhubner Date: Sun Feb 17 16:39:28 2008 New Revision: 2525
Modified: branches/trunk-reorg/bknr/datastore/src/data/object.lisp branches/trunk-reorg/bknr/datastore/src/data/txn.lisp branches/trunk-reorg/bknr/modules/mail/mail.lisp branches/trunk-reorg/bknr/web/src/rss/rss.lisp Log: Docstring fixes, add another missing defgeneric.
Modified: branches/trunk-reorg/bknr/datastore/src/data/object.lisp ============================================================================== --- branches/trunk-reorg/bknr/datastore/src/data/object.lisp (original) +++ branches/trunk-reorg/bknr/datastore/src/data/object.lisp Sun Feb 17 16:39:28 2008 @@ -647,7 +647,7 @@
(defun find-store-object (id-or-name &key (class 'store-object) query-function key-slot-name) - "mock up implementation of find-store-object api as in the old datastore" + "Mock up implementation of find-store-object API as in the old datastore" (unless id-or-name (error "can't search a store object with null key")) (when (stringp id-or-name)
Modified: branches/trunk-reorg/bknr/datastore/src/data/txn.lisp ============================================================================== --- branches/trunk-reorg/bknr/datastore/src/data/txn.lisp (original) +++ branches/trunk-reorg/bknr/datastore/src/data/txn.lisp Sun Feb 17 16:39:28 2008 @@ -223,12 +223,11 @@ ;;; itself or, in the case of a nested transaction, the parent ;;; transaction. Named transactions do not explicitly log the nested ;;; transactions as the nesting is implicit, meaning that any repeated -;;; execution of the transactions triggered by rolling forward the -;;; transaction log will automatically repeat the sequence of -;;; executing nested transactions by the program code executed. -;;; Contrasted to that, an anonymous transaction has no implicit -;;; nesting, so any nested transactions which are called are -;;; explicitly logged. +;;; execution of the transactions while rolling forward the +;;; transaction log will automatically repeat the sequence of nested +;;; transaction executions by the program code executed. Contrasted +;;; to that, an anonymous transaction has no implicit nesting, so any +;;; nested transactions which are called are explicitly logged.
(defgeneric execute-transaction (executor transaction) (:documentation "Execute TRANSACTION on EXECUTOR (which may be a store or a transaction scope).")) @@ -299,9 +298,10 @@ (defmacro deftransaction (name (&rest args) &rest body) "Define a transaction function tx-NAME and a function NAME executing tx-NAME in the context of the current store. The arguments to NAME -will be serialized to the transaction-log, and should must be -supported by the binary encoder. tx-NAME will be called during a -roll-forward." +will be serialized to the transaction-log, and must be supported by +the binary encoder. tx-NAME will be called during a roll-forward to +repeat any effects that the transaction function had on the persistent +store." (let ((name name) (args args) (body body))
Modified: branches/trunk-reorg/bknr/modules/mail/mail.lisp ============================================================================== --- branches/trunk-reorg/bknr/modules/mail/mail.lisp (original) +++ branches/trunk-reorg/bknr/modules/mail/mail.lisp Sun Feb 17 16:39:28 2008 @@ -92,12 +92,14 @@ :subject (header :subject) :id (regex-replace-all *message-id-re* - (header :message-id) #?/\1/) -#| :in-reply (regex-replace-all + (header :message-id) + #?/\1/) + :in-reply (regex-replace-all *message-id-re* (first (if (header :in-reply-to) (split #?/\s+/ (header :in-reply-to)) - (last (split #?/\s+/ (header :references)))))) |# + (last (split #?/\s+/ (header :references))))) + #?/\1/) :headers headers :body body)))))
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 Sun Feb 17 16:39:28 2008 @@ -64,6 +64,9 @@ class RSS-CHANNEL for an overview."))
(defun make-rss-channel (name title description link &rest args) + "Create an RSS channel with the given NAME, TITLE, DESCRIPTION and +LINK (all strings) which are the mandatory fields in an RSS channel. +Returns the persistent RSS-CHANNEL object that has been created." (apply #'make-object 'rss-channel :name name :title title :description description :link link args))
(defun render-mandatory-element (channel element) @@ -73,20 +76,23 @@ it (format nil "(channel ~(~A~) not defined)" element)))))
-(defmethod rss-channel-xml ((channel rss-channel) stream) - (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)) +(defgeneric rss-channel-xml (channel stream) + (:documentation "Generate XML for the current state of RSS channel +CHANNEL to STREAM.") + (:method ((channel rss-channel) stream) + (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)) - (dolist (item (remove-if-not #'(lambda (item) - (and (not (object-destroyed-p item)) - (rss-item-published item))) - (rss-channel-items channel))) - (rss-item-xml item)))))) + (dolist (item (remove-if-not #'(lambda (item) + (and (not (object-destroyed-p item)) + (rss-item-published item))) + (rss-channel-items channel))) + (rss-item-xml item)))))))
(defgeneric rss-channel-items (channel) (:documentation "Return all non-expired items in channel.")