Реализация StringTemplate на RSL. Альтернатива конкатенации строк.

Автор:Marik
Дата:23.10.2018
Просмотров:695
Скачиваний:149
Оценка: - , Оценок - 0
Скачать (zip-файл; Размер - 1442)

Обсудить в форуме

Описание

Реализация StringTemplate на RSL. Альтернатива конкатенации строк.

Функции:

Macro StrTmpl(str : String) : String - Возвращает сгенерированную строку из шаблона 'str'.
Macro PrintlnT(str) - Передает в выходной поток сгенерированную строку из шаблона 'str' с переносом строки.
Macro PrintT(str) - Передает в выходной поток сгенерированную строку из шаблона 'str' без переноса строки.

Как использовать:

Для передачи выражения expr необходимо заключить его в '$[expr]';
expr может быть
- глобальной переменной,
- ссылкой на объект с реализованным методом toString,
- любым выражением на языке RSL, доступным в глобальном контексте, за исключением символов [](т.е к эл-ам массива следует обращаться через () );
Также возможно применять спецификаторы форматирования внутри скобок.

Для использования функции внутри макрофункции, есть возможность использовать принудительно-глобальные переменные (пгп)
при этом, если необходимо передать в шаблон одиночную пгп, можно не ограничивать её $[]. Однако при необходимости использовать функцию необходимо заключить его в $[] при этом пгп обозначать внутри {}.


Пример использования:

var acc = "40817840000000001234";
var client = "Иванов Иван Иванович";
var sum = $100523.23;
var rate = 65.59;
var tmpl = StrTmpl("Остаток на счёте в р.э. $[acc] ($[client]) = $[sum*rate:a:0:2]");
Println(tmpl);
// Остаток на счёте в р.э. 40817840000000001234 (Иванов Иван Иванович) = 659'331'865.57

Пример с использованием пгп:

Macro pgp()
var {i} = 0;
for({i}, 1, 5)
PrintlnT("Строка {i} к Вашим услугам.");
end;
End;
pgp();
// Выведет 5 нумерованных строк.