On 10 October 2002, Joel Shprentz said: > I hope that plain and html are class names, not keywords. Then we would > not be limited to three types of functions. For example, one could imagine > an sql class that converts strings to the appropriate form for SQL queries. > > def bar [sql] (lastName): > "SELECT * FROM staff\n" > "WHERE last = " > lastName > > Calling bar ("O'Henry") produces: > > SELECT * FROM staff > WHERE last = 'O''Henry' Interesting idea. We have zero interest in SQL, so you're on your own in coding this one. > The PTL documentation says, "the value is converted to a string using str() > and appended to the template's return value. There's a single exception to > this rule: None is the only value that's ever ignored, adding nothing to > the output." > > I haven't looked under the hood to see where this is implemented. Is it > specific to the current string output, or is it generic to all PTL template > processing? Look in TemplateIO.py, specifically the __iadd__() method. If I'm understanding ptl_compile.py correctly, PTL works by converting every expression foo to __output += foo where __output is a TemplateIO instance, created at the top of the function (err, template) and returned by it. See the TemplateTransformer class in ptl_compile.py. Of course this stuff will probably change when Neil checks in his pending patch. Watch the CVS tree. Subscribe to quixote-checkins if you're really interested. So you would have to 1) create an SQL-specific subclass of TemplateIO, and 2) persuade TemplateTransformer to use it. It looks to me like some module-level globals in ptl_compile.py should become class attributes to make this a bit cleaner. Play around, let us know if you come up with something. Patches welcome! Greg -- Greg Ward - software developer gward@mems-exchange.org MEMS Exchange http://www.mems-exchange.org