API шаблонизатора


Класс template_text


// Конструктор
template_text(udf_fn_factory * pFactory = NULL,
        const int iLine = 1,
        const int iPos = 1,
        const int iTabLength = 9,
        const bool bDebug = false,
        const bool bStrict = true,
        const bool bLoopContextVars = false,
        const bool bGlobalVars = false);

где:
pFactory - фабрика объектов пользовательских функций

iLine - номер строки шаблона (по умолчанию - 1)
iPos - позиция в строке шаблона (по умолчанию - 1)
iTabLength - размер символа табуляции в пробелах (по умолчанию 9)

Эти три параметра используются для задания начальных значений в системе синтаксического контроля шаблона.

bDebug - параметр, отвечающй за вывод дополнительной отладочной информации (по умолчанию отладка отключена)
bStrict - состояние строгой проверки синтаксиса шаблона (после конструкции <TMPL_ обязательно должен следовать оператор шаблонизатора CT++, по умолчанию включено)

bLoopContextVars - использование контекстных переменных в цикле (по умолчанию отключено)
bGlobalVars - спользование глобальных переменных в цикле (по умолчанию отключено)


// Получение Factory
udf_fn_factory * get_fn_factory();

Получение фабрики объектов. Если объект шаблонизатора создается без фабрики объектов, объект самостоятельно создает свою внутреннюю фабрику с набором стандартных функций.
Метод get_fn_factory служит для получения указателя на фабрику.

// Установка IncludeDir
void set_include_dir(const v_include_dir &vIncludeDir);

где:
vIncludeDir - список каталогов для подключения вложений через <TMPL_include имя_файла.tmpl>

В случае, если путь к имени файла не начинается со слеша, файл последовательно ищется во всех каталогах из vIncludeDir. Если же путь начинается со слеша, путь проверяется на вхождение в vIncludeDir. В случае, если путь не найден в vIncludeDir или невозможно открыть файл, генерируется исключение std::logic_error.

// Парзинг текста
void parse(const std::string & sData);

void parse(std::string::const_iterator & sDataBegin, std::string::const_iterator & sDataEnd);

Перегруженный метод. На вход получает начало и конец последовательности символов, являющихся шаблоном, либо строку символов.

// Вставка параметров
void param(param_data * pParamData);

Вставка параметров в шаблон.

// Вывод данных
std::string & output();

Вывод данных пользователю.

// Очистка шаблона
void clear_template();

Очистка шаблона.

// Деструктор
~template_text() throw();


Класс loader_base

Базовый класс для создания собственного загрузчика вложений.
Используется по умолчанию и открывает файлы с диска.

// Загрузка файла
virtual void load_file(const std::string &sFileName);


Метод получает полное имя файла в виде аргумента.

// Получение данных
virtual std::string & get_data();


Отдает содержимое открытого файла.

// Деструктор
virtual ~loader_base() throw();


Класс udf_fn_factory

Класс-инсталлятор функций, определенных пользователем.

// Установка пользовательской функции
void install_udf_fn(const std::string &sFunctionName, udf_fn * pUDFFn);

Вставляет созданный ранее объект функции в фабрику объектов. Первый параметр - имя функции в шаблоне. Второй параметр - указатель на объект функции.

// Удаление пользовательской функции
void remove_udf_fn(const std::string &sFunctionName);

Удаление функции из фабрики объектов. Первый параметр - имя функции в шаблоне.

// Получение ссылки на функцию
udf_fn * get(const std::string &sFunctionName);

Первый параметр - имя функции в шаблоне.

// Удаление всех функций
void clear();

Удаляет все, в том числе и стандартные функции из фабрики объектов.

// Деструктор
virtual ~udf_fn_factory();


Класс param_data

Данный класс используется для передачи параметьров в шаблонизатор.

Определения сущностей.
В шаблонизаторе CTPP есть три типа данных: строка, массив и хэш. Ниже приведены определения этих типов:
// Строка
typedef std::string t_param_str;

// Массив
typedef std::vector<param_data *> t_param_array;

// Хэш
typedef std::map<std::string, param_data *> t_param_hash;


Для указания типа объекта служит перечисляемое множество e_value_type:
enum e_value_type { VAR, ARRAY, HASH };

// Конструктор
param_data(e_value_type eIType = VAR);

Создает объект в заданным типом.

// Указатель на переменную типа VAL
t_param_str * val();

Возвращает указатель на объект типа "строка". Если этот метод запрашивается у объекта с типом, отличным от VAR, генерируется исключение std::logic_error.

// Указатель на переменную типа ARRAY
t_param_array * array();

Возвращает указатель на объект типа "массив". Если этот метод запрашивается у объекта с типом, отличным от ARRAY, генерируется исключение std::logic_error.

// Указатель на переменную типа HASH
t_param_hash * hash();

Возвращает указатель на объект типа "хэш". Если этот метод запрашивается у объекта с типом, отличным от HASH, генерируется исключение std::logic_error.

// Тип переменной
e_value_type get_value_type();

Получение типа объекта.

// Вставка переменной в хеш
param_data * hash_insert_new_var(const std::string &sKey, const std::string &sValue);

Вставка пары "ключ => значение" в хэш. Возвращает указатель на созданную строку.

// Вставка массива в хеш
param_data * hash_insert_new_array(const std::string &sKey);

Вставка пары "ключ => массив" в хэш. Возвращает указатель на созданный массив.

// Вставка переменной в массив
param_data * array_insert_new_var(const std::string &sKey);

// Вставка хеша в массив
param_data * array_insert_new_hash();

// Удаление переменной из хеша
void param_data::hash_erase_var(const std::string &sKey);

// Деструктор
~param_data();


Copyright © 2003 - 2005 CTPP Dev. Team | http://reki.ru/products/ctpp