Plasma GitLab Archive
Projects Blog Knowledge

Module Netcgi_modtpl

module Netcgi_modtpl: sig .. end
Deprecated.Mod_caml style of templates. This template module is simple to use. It is here to provide a simple upgrade path from mod_caml. It should not be considered as the default template system of Netcgi.

type var = 
| VarString of string (*

::tag::

*)
| VarTable of table_row list (*

::table(tag)::

*)
| VarConditional of bool (*

::if(tag)::

*)
| VarCallback of (string list -> string) (*

::call(f, x1,...)::

*)
type table_row = (string * var) list 

Variables are either simple string, tables, conditionals or callbacks.

A simple string is set with template#set "name" s where s will be automatically escaped depending on the declaration in the template:

  • ::name:: does no escaping;
  • ::name_url:: escapes for URL encoding, make it suitable in a link <a href="::name_url::">;
  • ::name_html:: escapes for HTML display of the string;
  • ::name_html_tag:: escapes the string to make it suitable to be placed between quotes in an HTML tag, e.g. <input value="::name_html_tag::">;
  • ::name_html_textarea:: escapes the string to make it suitable to be placed between <textarea>...</textarea>.

Tables are declared in the template by ::table(name):: row template ::end::. The row template can contain other variables. Calling template#table "name" rows, where rows is a list [row1, row2,...,rowN], will insert N row templates with each template having its variables set thanks to row1,... each of which is an associative list name -> value (of type Template.table_row).

Conditionals are declared in the template by ::if(name) .. ::else:: .. ::end:: with the "else" clause being optional. Calling template#conditional sets up a conditional value.

Calling template#callback "fname" f sets up the callback function declared by ::call(fname,arg1,...,argN):: replacing the call by the value of f applied to the list [arg1,...,argN]. The string returned by f can be escaped by using suffices in the template as for simple tags: ::call(fname,arg1,...,argN)_html::,...

A template may also include other templates with ::include(filename)::.

class template : ?filename:string -> string -> object .. end

new template ?filename tpl computes a new template from the string tpl.

val template : string -> template

Compile the template from a named file. Not thread safe.

val template_from_string : ?filename:string -> string -> template

Compile the template from a literal string. Not thread safe.

val template_from_channel : ?filename:string -> Stdlib.in_channel -> template

Compile the template from a channel. Not thread safe.

This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml