TODO (1.9) ========== * Made statement an optional block element, a-la JSTL. - Update the manual to reflect this behaviour. * Function variables can be either globally or dynamically scoped. - Update the manual to reflect this behaviour. * Similarly, functions take on Awk behaviour regarding local variables. - Update the manual to reflect this behaviour. * Added an #empty special identifier, which returns a null model. - Update the manual to reflect this behaviour. * Improved the way the reflection library deals with numbers and number conversions from the internal template models. - Add more test cases for this model. * Check the severity of the new exception handler calls. They may be a bit out. * Consider a FastSubList model, that takes an argument of the form [ 1 .. 10 ] and returns a TemplateListModel2 corresponding to the numbered arguments. The arguments would be assigned meaning by the underlying model. Todo: decide if the sublist should also be indexed, and if so, what the indexed should be. * Created a rewrite of the freemarker.ext.beans classes (beans2). - Need to extensively document the behaviour of the new package. * FastIndexedIterator and FastIndexedWriteableIterator could implement TemplateHashModel and provide an "index" variable for the current position in the list. * Also consider making FastListIterator implement indexed model. Add a constructor to take the initial index offset. Similar for EnumIterator. * Lots of JavaDoc needs to be written. Much has been neglected during this development cycle. * Similarly, the file template needs its copyright statement updated to 2005. * Look at AtomicBoolean, AtomicInteger, AtomicLong, and the java.util.concurrent.atomic package generally, and see what can be handled within the reflection package. * Look closely at the javax.script package in Java 1.6 draft, and see if there is a suitable adapter we can create, or remodel existing classes on. TODO 1.10 ========= * Consider regularising indexes to be 1-based, rather than 0-based. This makes more sense given the engine's list range notation. * Along similar lines, can finally make the switch to relative paths for handling inclusions. This may further complicate IncludeInstruction and/or the cache package. - How do you resolve non-filesystem paths? A pluggable resolver? Where do you plug it in? * Have yet another look at making StandardTemplateParser use a Reader instead of String and parsePos, etc. Need a markable buffer plus a small lookahead buffer. * Models deserve their own package. Consider creating one especially for the model interfaces.