diff options
Diffstat (limited to 'TODO')
-rw-r--r-- | TODO | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -352,3 +352,50 @@ Examples database? Caching template classes and/or instances extracted from a database. - Pickled templates? + + +CheetahX: pie-in-the-sky +======================================================================== +These ideas are being considered for Cheetah 2.0. + +- There are five distinct objects in Cheetah which should have a clearer + separation. + + 1. TEMPLATE DEFINITION: a string. + 2. TEMPLATE METHOD: the method that implements the desired template + (which may be the Main Method or a #def/#block method). This is + inside the generated class, which is inside the generated module. + 3. DATA: the searchList, local variables, current filter, etc. Everything + that changes at runtime. + 4. INFRASTRUCTURE: the internal code used by Cheetah to fill and maintain the + template. + 5. SERVICES: convenience methods from the infrastructure exposed to user. + + Cheetah combines 2-5 into a single Template subclass. CheetahX proposes to + keep these distinct, with defined containment and interfaces between them. + +- The TEMPLATE METHOD might instantiate an INFRASTRUCTURE object for each + fill. The constructor arguments would be everything necessary to access + the DATA. Perhaps the TEMPLATE METHOD can pass its own code block, making + its own locals/globals accessible directly. This would be a bit + unorthodox, but less so than the current practice of switching the + template instance's class on the fly. + +- For SERVICES, add a custom object to the searchList that knows how to + access the protected INFRASTRUCTURE data. + +- Push more work into INFRASTRUCTURE, to insulate the TEMPLATE METHOD from + implementation changes. For instance, replace every placeholder lookup + with a simple INFRASTRUCTURE method call, and let the infrastructure + do all the processing. (It can use the code block mentioned above to + access the searchList and current filter.) For local variable + lookups, you can call another method and pass the value directly. + For caching, I guess you pass in the cache time (or a special constant) + as a separate argument, and let the INFRASTRUCTURE maintain the cache. + +- Tavis wants to rewrite the cache infrastructure and fully implement it. + +- The Template class needs to be split up into stuff nececssary to fill + a template (the INFRASTRUCTURE), and stuff necessary to comple a template + (which is not necessary for using precompiled templates, and slows down + Cheetah's import time). |