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