Я реализую несколько директив для отображения содержимого в соответствии с некоторой пользовательской разметкой.Я хочу, чтобы источник Freemarker был читабельным, поэтому я хочу свободно использовать пробелы и разрывы строк в теле шаблона в источнике шаблона, но хочу подавить все из них, когда я на самом деле их визуализирую.Пример:
Рассмотрим источник FreeMarker для таблицы:
<@table args={"border": 1}>
<@tr>
<@td>table_data_with_no_line_breaks_r1c1</@td>
<@td>table_data_with_no_line_breaks_r1c2</@td>
<@td>table_data_with_no_line_breaks_r1c3</@td>
</@tr>
<@tr>
<@td>table_data_with_no_line_breaks_r2c1</@td>
<@td>table_data_with_no_line_breaks_r2c2</@td>
<@td>table_data_with_no_line_breaks_r2c3</@td>
</@tr>
</@table>
Каждая директива реализована примерно так:
class Table implements TemplateDirectiveModel {
public void exec(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) {
env.getOut().write("<custom_table>");
body.render(env.getOut());
env.getOut().write("</custom_table");
}
}
Аналогичные реализации существуют для других директив.Я хочу, чтобы фактический результат был похож (каждая строка должна быть в одной строке без начальных или конечных пробелов):
<custom_table>
<row><column>data</column><column>data</column></row>
<row><column>data</column><column>data</column></row>
</custom_table>
Как мне этого добиться?Я могу использовать директиву <#t>
в конце каждой строки, чтобы обрезать пробел, но это кажется неуклюжим, и авторы шаблонов могут иногда забыть вставить это.Есть указатели?