Re: [Cheetahtemplate-discuss] (implict) #indent or preprocessor
Brought to you by:
rtyler,
tavis_rudd
From: <ir...@ms...> - 2002-05-28 10:52:47
|
On Tue, May 28, 2002 at 10:08:48AM +0200, rob...@ya... wrote: > >> 2) explict global whitespacehandling > >> introducing a new directive that tells > >> cheetah to ignore leading whitespaces and instead > >> insert the actual defined whitespaces. > >> the directive should support two modes > >> absolute insertion and relative > >Would you do this at compile-time or run-time? > whats the difference? (in cheetahs context of course) > > >Option (a) can't deal with output that comes from $methods or #includes. > >Option (b) can. I prefer option (b) as I've been bitten by compile-time > >limitations too many times. First off, compile time means generating Python source code that's equivalent to the template definition. Run time means running that Python code. There is no searchList at compile time, so you can't do anything that involves looking up placeholder values. The advantage of doing things at compile time is that you do them once no matter how many times the template instance is filled over the lifetime of the application. You can even precompile and factor out the compilation overhead completely. The advantage of doing things at run time is flexibility. In Java, all the attributes of an object are fixed at compile time. In Python, you can add and delete attributes any time you want. Example: we used to do partial placeholder lookup at compile time in the name of efficiency, but found it was too limiting. 1) You couldn't change the types of the placeholder values or the generated Python code would break. 2) The placeholder values had better exist at the time of compilation or you'll get a Not Found error. That prevented common usages where you provide the values at the latest possible moment. -- -Mike (Iron) Orr, ir...@ms... (if mail problems: ms...@oz...) http://iron.cx/ English * Esperanto * Russkiy * Deutsch * Espan~ol |