TemplatePage

You feed the code a hash. For simple variables, the values are resolved
directly from the hash. For blocks, the hash entry corresponding to
key will be an array of hashes. The block will be generated
once for each entry. Blocks can be nested arbitrarily deeply.

The template may also contain

IF:key
... stuff
ENDIF:key

stuff will only be included in the output if the corresponding key
is set in the value hash.

Public Class Methods

new(*templates)click to toggle source

templates is an array of strings containing the templates. We
start at the first, and substitute in subsequent ones where the string
!INCLUDE! occurs. For example, we could have the overall page
template containing

<html><body>
<h1>Master</h1>
!INCLUDE!
</bost></html>

and substitute subpages in to it by passing [master, sub_page]. This gives
us a cheap way of framing pages

Substitute a set of key/value pairs into the given template. Keys with
scalar values have them substituted directly into the page. Those with
array values invoke substitute_array (below), which examples a
block of the template once for each row in the array.

This routine also copes with the IF:key directive,
removing chunks of the template if the corresponding key does not appear in
the hash, and the START: directive, which loops its contents for each value
in an array