NoIndentWriter не учитывает пробелы в шаблоне
Я пытаюсь использовать класс NoIndentWriter, чтобы обойти проблему, с которой я сталкиваюсь, связанную со вставкой пробела в многострочные строки.
Тем не менее, похоже, что NoIndentWriter
делает намного больше, чем просто не делает авто-отступ. В частности, он обрезает все начальные (но не завершающие пробелы), даже если явно присутствует в шаблоне.
Например, со следующим файлом шаблона:
$ cat src/templates/a.xml.stg
ladder(value)::=<<
0
1
2
3
^value^
>>
... и следующий код:
public static void main(String args[]) throws Exception {
STGroup stGroup = new STGroupFile("templates/a.xml.stg", '^', '^');
ST st = stGroup.getInstanceOf("ladder");
st.add("value", "4");
StringWriter sw = new StringWriter();
NoIndentWriter w = new NoIndentWriter(sw);
st.write(w);
String result = sw.toString();
System.out.printf("result is:\n%s\n", result);
PrintWriter pw = new PrintWriter("out");
pw.println(result);
pw.close();
}
... производится следующее:
$ cat out
0
1
2
3
4
Изучая out
В файле видно, что конечные пробелы, присутствующие в файле шаблона, были сохранены, но начальные пробелы урезаны.
Есть ли способ указать StringTemplate для сохранения пробелов в файлах шаблонов без использования AutoIndentWriter (потому что он страдает от этой проблемы)?