Placeholders
    The default format of placeholder is
    
    This means, the name of the placeholder can consist of upper- and lowercase
    letters, underscores and hyphens. The name must be placed between curly
    brackets without any spaces.
   
    Actual values for the placeholders are set using setVariable() and setGlobalVariable() methods. Placeholders for which no values were set are removed from output by default.
   
Blocks
    The format of a block is
    
<!-- BEGIN [0-9A-Za-z_-]+ -->
... block content ...
<!-- END [0-9A-Za-z_-]+ -->  | 
    The rules for the block name are the same like for placeholders.
    In contrast to placeholders the spaces in the block markup are
    required.
   
    The nesting of blocks is permitted, but be careful while
    parsing. You have to parse() the innermost block first and then go from inner to outer.
   
    In Sigma the whole template itself is treated as a virtual block called
    "__global__". Most block-related functions use this block
    name as default.
   
<!-- INCLUDE --> statements
      It is possible to include a template file from within another template file using an <!-- INCLUDE filename --> statement:
      
... some content ...
<!-- INCLUDE filename.html -->
... some more content ...  | 
      When such a template file gets loaded, the 
<!-- INCLUDE filename.html --> will be replaced by contents of 
filename.html.
    
    Some things to note:
    
Although this functionality is implemented using addBlockfile(), unlike addBlockfile() no new blocks are created in the template.
<!-- INCLUDE --> calls are processed before any variable substitution can take place. So <!-- INCLUDE {placeholder} --> will not work unless you actually have a file named {placeholder} and want to load it.
    Template functions
      Sigma templates can contain simple function calls. This means that the  author of the template can add a special placeholder to it
     
... some content ...
func_h1("embedded in h1")
... some more content ... | 
Sigma will parse the template for these placeholders and will allow  you to define a callback function for them via 
setCallbackFunction(). Callback will be called  automatically when the block containing such function call is 
parse()'d.
    
    Format of such function name is as follows
     
func_[_a-zA-Z]+[A-Za-z_0-9]*  | 
that means that it should start with a 'func_' prefix, then has a letter or an undercore and then a sequence of letters, digits or underscores. Arguments to these template functions can contain  variable placeholders
     
func_translate('Hello, {username}') | 
     but not  blocks or other function calls.
    
Quoting of template function arguments
Note: 
          The information in this section applies to HTML_Template_Sigma
          version 1.1.2 and later, please upgrade if you have problems with template 
          function arguments in previous versions.
        
        Quoting of function arguments is not mandatory, the following is a perfectly
        valid template function:
func_uppercase(Some unquoted text)  | 
        But consider the following: function arguments are contained within 
        parentheses and separated by commas. Therefore if closing parenthesis
        
')' or comma 
',' 
        appears in function argument, it should be quoted.
      
        The next thing to consider is that HTML_Template_Sigma
        is mostly targeted for generating HTML. Therefore a quoted
        string within an argument is most probably a tag attribute. The contents of
        such strings are not parsed for commas and parentheses.
        Therefore the following is also a perfectly valid template function:
func_foo(<a href="javascript:foo(bar, baz)">Do foo</a>)  | 
        But if you have an unmatched single or double quote in your argument or if the
        argument starts with a quote, it should be quoted.
      
        Finally, the argument should be quoted if it is an empty string or if its 
        leading or trailing whitespace is significant (leading and trailing whitespace 
        will be removed from unquoted arguments).
      
        The arguments can be quoted using either single or double quotes. If an
        argument contains a quote of the same type, then it should be escaped using
        the backslash symbol '\'. The backslash symbol
        itself should also be escaped,
func_foo('O\'really')
func_foo('AC\\DC') | 
        will pass 
O'really and 
AC\DC to
        the relevant callbacks.
      
Example 41-1. Valid and invalid template function arguments Valid arguments:
func_foo(Some unquoted text)
func_foo("Some quoted text")
func_foo(<a href="javascript:foo(bar, baz)">Do foo</a>)
func_foo('O\'really')
func_foo('AC\\DC')
Invalid arguments:
func_foo(Hello, {username}) contains a comma, will yield two arguments instead of one
func_foo(O'really) unmatched single quote
func_foo('O'really') unescaped single quote
func_foo(, 'whatever') empty arguments should be quoted |  
  | 
Shorthand for template functions
    Since release 1.1.0, instead of using
    
    you can write
    
    There are 3 automatically registered template functions
    Thus, if you add {var:h} placeholder to the template, var will be have unsafe characters replaced by corresponding HTML entitites.