Думая над тем как же лучше реализовать
Движок текстовых шаблоновАвтор: VladD2
Дата: 11.04.07
мы с IT пришли к выводу, что проще всего (как технически, так и политически) ввести новый тип строки.
Сначала примеры:
def str = <#
Эта строка не только позволяет
переносить свое содержимое на новую строку и таким образом
занимать несколько строк, но так же, в ней игнорируются ведущие
сиволы строки совпадающие с последней строкой.
#>; // т.е. из всех строк будет вычтена последоватльность сиволов идущая до #> на этой строке
def str = <#
.....В качестве начальных сиволов могут использоваться любые символы.
.....Например, в данном случае используются точки.
.....#>;
def str = <#
.+...Если символы не совпали с символом последней строки,
.....то выдается ошибка времени компиляции.
.....#>;
def str = <#
Пустая первая строка (т.е. строка идущая за <#) или строка
состоящая только из пробельных сиволов игнорируется.
Причем игнорируется вместе с концом строки.
#>;
// Таким образом предыдащая строка преобразуется в:
def str = @"Пустая первая строка (т.е. строка идущая за <#) или строка
состоящая только из пробельных сиволов игнорируется.
Причем игнорируется вместе с концом строки.";
def str = <# Если
В первой строке есть текст, то он берется как есть (т.е. ничего
не отбрасывается и конец строки не игнорируется).
#>;
// Последнее можно использование для организации тегов в DSL-ях:
def str = <# sql:
SELECT Проводки.DATEDOC AS [Дата оборотов],
(SELECT sum(sub.AMOUNT) FROM Проводки as sub
WHERE sub.TYPE_ID=0 AND sub.DEBIT=True
and sub.DATEDOC = Проводки.DATEDOC)
AS [Сумма по дебету],
(SELECT sum(sub.AMOUNT) FROM Проводки as sub
WHERE sub.TYPE_ID=0 AND sub.DEBIT=True
and sub.DATEDOC <= Проводки.DATEDOC)
AS [Остаток на конец по дебету]
FROM Проводки
WHERE (((Проводки.TYPE_ID)=0))
GROUP BY Проводки.DATEDOC
ORDER BY Проводки.DATEDOC;
#>;
def str = <#
Если такой вид строк содержит пустую строку
в которой вообще нет ведущих пробельных символов.
Или символов меньше чем в последней строке, то строка считается
пустой.
#>;
Собственно интересует обсуждение этого предложения. Приветствуется критика, предложения и вопросы.
... << RSDN@Home 1.2.0 alpha rev. 637>>