Skip to content
Browse files

*** empty log message ***

  • Loading branch information...
1 parent 9f5ff68 commit 5329f6344e0f1c6b9893d9b1999c094fa6c5a0d1 hierro committed Dec 17, 2003
Showing with 47 additions and 0 deletions.
  1. +47 −0 TODO
@@ -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.
+ 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).

0 comments on commit 5329f63

Please sign in to comment.
Something went wrong with that request. Please try again.