Как насчет добавления нового вида строки <# ... #> ?
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.04.07 23:25
Оценка:
Думая над тем как же лучше реализовать Движок текстовых шаблонов
Автор: 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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.