On 26 March 2010 23:51, Marijn Haverbeke <mari...@gmail.com> wrote: > Hi Andrey, > > Thanks for submitting a patch. But -- why plists? Do you have some > library for which you need results like this?
FWIW, i've had a plist row reader in RELATIONAL-OBJECTS-FOR-LISP since pretty much day 1. I'm not sure why i didn't send a patch... probably because i didn't think of it as more generally useful as i have a lot of different, more specific row readers. Anyway, thought i'd chime in. Cheers, drewc > Best, > Marijn > > On Fri, Mar 26, 2010 at 10:56 PM, Andrey Moskvitin <archi...@gmail.com> wrote: >> Hi, >> I propose to add new query formats: >> diff --git a/doc/postmodern.html b/doc/postmodern.html >> index 3691ae8..9ac466f 100644 >> --- a/doc/postmodern.html >> +++ b/doc/postmodern.html >> @@ -202,6 +202,10 @@ >> row.</td></tr> >> <tr><td><code>:list</code>, <code>:row</code></td><td>Return a >> single row as a list.</td></tr> >> + <tr><td><code>:plists</code></td><td>Return a list of plists which >> map column >> + names to values,with the names represented as >> + keywords.</td></tr> >> + <tr><td><code>:plist</code></td><td>Return a single row as an >> plist.</td></tr> >> <tr><td><code>:alists</code></td><td>Return a list of alists which >> map column >> names to values,with the names represented as >> keywords.</td></tr> >> diff --git a/postmodern/query.lisp b/postmodern/query.lisp >> index 3e5bfa5..921d03d 100644 >> --- a/postmodern/query.lisp >> +++ b/postmodern/query.lisp >> @@ -9,6 +9,15 @@ >> :for symbol :in symbols >> :collect (cons symbol (next-field field)))))) >> >> +;; Like symbol-alist-row-reader, but return plist >> +(def-row-reader symbol-plist-row-reader (fields) >> + (let ((symbols (map 'list (lambda (desc) (from-sql-name (field-name >> desc))) fields))) >> + (loop :while (next-row) >> + :collect (loop :for field :across fields >> + :for symbol :in symbols >> + :collect symbol >> + :collect (next-field field))))) >> + >> ;; A row-reader for reading only a single column, and returning a list >> ;; of single values. >> (def-row-reader column-row-reader (fields) >> @@ -22,6 +31,8 @@ >> (:list list-row-reader t) >> (:rows list-row-reader nil) >> (:row list-row-reader t) >> + (:plists symbol-plist-row-reader nil) >> + (:plist symbol-plist-row-reader t) >> (:alists symbol-alist-row-reader nil) >> (:alist symbol-alist-row-reader t) >> (:str-alists alist-row-reader nil) >> >> Moskvitin Andrey >> _______________________________________________ >> postmodern-devel mailing list >> postmodern-devel@common-lisp.net >> http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel >> >> > > _______________________________________________ > postmodern-devel mailing list > postmodern-devel@common-lisp.net > http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel > _______________________________________________ postmodern-devel mailing list postmodern-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/postmodern-devel