Nikodemus Siivola tsiivola@cc.hut.fi writes:
On Sat, 13 Mar 2004, Mario Mommer wrote:
(def-project :label "pg" :name "Pg" :category "Database" :description "A Common Lisp interface to the PostgreSQL database")
their project directory (which is desirable. We could do a lot with this, like automagically generating acceptable temporary project pages) we should be careful to make sure that we don't open a security hole the size of the panama channel.
Why not have the data in file with just alists,
Good point. But perhaps it looks better this way. In any case, def-project makes an alist. :)
and read it into a scratch package with some readtable hackery to 1) guard against #. 2) preserve package hygiene. (See main.lisp in linedit sources for one example of how to do this.)
Ok.
Then just:
(apply #'make-project :label label (apply #'append alist))?
Then the profile.sexp (or whatever) would look like:
;;;; Use this file to alter how your project appears on the ;;;; common-lisp.net website. ;;;; ;;;; The contents should be a single alist, with elements of the form ;;;; ;;;; (<keyword> <value>) ;;;; ;;;; The values will appear on the pages are processed by PRINC. ;;;; Unknown keywords are ignored, so feel free to use them. ;;;; Known keywords are: ;;;; ;;;; :name, :category, :description, :license ;;;; ;;;; The reading of this is done with some readtable hackery: ;;;; ;;;; #.foo => foo ;;;; foo:bar => foo :bar ;;;; foo::bar => foo :bar ;;;;
((:name "Pg") (:category "Database") (:description "A Common Lisp interface to the PostgreSQL database"))
As you see I omitted the label form the stuff user-definable things: we know that when we read the file anyways.
Good point.
Regards, Mario.