Processors
Templater's architecture is designed to have pluggable data type processors.
For example .NET has ObjectProcessor, EnumerableProcessor,
DataTableProcessor, etc. JVM version has ResultSetProcessor,
MapProcessor, IterableProcessor, etc. They
are used to recognize passed data and act accordingly.
Only what processor can do is call low level API. IterableProcessor
calls Resize(Int) and iterates on every item in its
collection and call appropriate functionality.
So, when collection is passed to high level API, Templater will find
tags from collection element properties, fields and methods. It will
resize context which contains all found tags (this can be single or
multiple rows in a table, list with its nested sublists, etc).
What's cool about Templater is that it can be used as presentation
layer for domain model. Same objects which are used to display values
in GUI can probably be used to display report. Templater requires that
bindings are specified in tags (for example: [[Items.Product.Name]]).
Since specific processor will be invoked for each binding and part of
binding, even with default processors very complex designs can be
achieved. With custom processors fine tuning and special cases can be
covered too.
Example: Iterable processor
Result screenshot:
After processing of this template, tag names are
replaced with specialMenu and dailyMenu
corresponding properties.
Example: Named range
Template screenshot:
Result screenshot:
The resulting screenshot shows a named range filled with data. In this case,
there is only one table created (Group 0).