-
-# This file contains generally useful template handling code. It is wrapped in
-# an object so that if you want/need to you can make more than one instance of
-# it and they won't step on each other's toes. Also there are a set of global
-# functions at the bottom so you don't have to mess around with objects if you
-# don't want to. The documentation will be on the object methods, but just know
-# that each has a straight function wrapper at the bottom with 'tem_' prepended
-# to the name.
-
-# This is designed to be as simple as it can be for your project. The simple
-# way to use it is to set some key/value pairs with tem_set() then call
-# tem_output('filename.html') to output the page. A more complex example
-# including the use of sub-templates can be found in tem_test.php
-
-# FIXME: sub-sub templates need to be cleared when the sub template containing
-# them is run
+# Copyright (C) 2008,2009 Joshua Grams <josh@qualdan.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+# This is a simple template-handling system. You pass it a big data
+# structure with key/value pairs, and a template string to fill out.
+#
+# Within a template, it recognizes tags of the form ~name [arg...]~,
+# optionally wrapped in HTML comments (which will be removed along with
+# the tag markers when the template is filled out).
+#
+# { and } as the final argument mark those tags as being the start and
+# end of a sub-template (for optional or repeated sections). All other
+# tags represent slots to be directly filled by data values. On a }
+# tag, the name is optional, but must match the corresponding { tag if
+# present.
+#
+# For a value tag, arguments represent encodings to be applied
+# successively. For instance, ~foo html~ will encode it to be safe in
+# HTML ('&' to '&', '<' to '<', and so on).
+#
+# { tags can take one argument, which will call the corresponding
+# tem_auto_* function to munge the data, automating certain common use
+# cases. See the comments on the tem_auto functions for more details.