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 (потому что он страдает от этой проблемы)?

0 ответов

Другие вопросы по тегам