The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

libtmpl - Templating system C library

SYNOPSIS

#include "template.h"

context_p template_init(void)

int template_set_delimiters(char *opentag, char *closetag)

int template_register_simple(char *name, void (*function)(context_p, char **, int, char**))

int template_register_pair(char named_context, char *open_name, char *close_name, void (*function)(context_p, int, char**))

int template_set_value(context_p ctx, char *name, char *value)

int template_set_debug(context_p ctx, int debug)

int template_set_strip(context_p ctx, int strip)

int template_set_dir(context_p ctx, char *directory)

void template_destroy(context_p ctx)

context_p template_loop_iteration(context_p ctx, char *loop_name)

int template_parse_file(context_p ctx, char *template_filename, char **output)

int template_parse_string(context_p ctx, char *template, char **output)

DESCRIPTION

Design goals

simplicity, reusability, speed, complete separation of logic from formatting.

Feature set

variables, loops, conditionals, extensibility of tags, includes, arbitrary delimiters.

Usage

For starters, make sure you #include "template.h" and link against libtmpl.a.

Each function is described below:

template_init

This function initializes the library. It allocates and returns the "global" context structure, and also configures all of the default tag behavior.

template_set_delimiters

This function lets you change the delimiters marking the beginning and end of a tag (by default, these are "<!--#" and "-->". There is an arbitrary limit of 6 characters on these strings.

template_set_value

This function stores the name=value pair in the current context.

template_set_debug

This function sets the debugging level (from 0 = silent to 2 = verbose). Note that debugging output hasn't been written yet - this is just a placeholder.

template_set_strip

This function enables or disables the newline stripping feature. If enabled, the parser removes a single newline (if present) from after any tag.

template_set_dir

This function sets the directory where templates will be sought, both by parse_file and by the include tag. Search order is always current directory then this searched directory.

template_loop_iteration

This function adds an iteration to the loop named loop_name, and returns a unique context for that loop iteration.

template_parse_file

This function opens template_filename, and parses the contents of that file as a template, placing the output into *output. It allocates all the memory for you, but it is up to the programmer to free *output!

template_parse_string

This function parses template directly, in the same way that template_parse_file does.

template_register_simple

This function registers a new simple tag named name, which when encountered will cause the parser to call function. See template_extend(1) for the gory details.

template_register_pair

This function registers a new tag pair open_name/close_name, which when encountered will cause the parser to call function. See template_extend for the gory details.

template_destroy

This function blows away all of the memory allocated within the given context. You should really *only* call this on the context returned by template_init, and only at the end of your code.

RETURN VALUES

All of the above functions which return int values will return 0 if they fail, or 1 otherwise. The ones which return context_p pointers will return NULL if they fail, or a valid pointer otherwise.

BUGS

Hopefully none.

AUTHOR

J. David Lowe, dlowe@webjuice.com

SEE ALSO

Text::Tmpl(1), template_syntax(1), template_extend(1)