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, 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.) 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.
Cheers,
-- Nikodemus