NoIndentWriter不尊重模板中的空格

时间:2015-01-13 20:34:13

标签: java stringtemplate stringtemplate-4

我正在尝试使用NoIndentWriter课来解决我遇到的与inserting of whitespace in multiline Strings相关的问题。

然而,似乎NoIndentWriter做的不仅仅是不自动缩进。特别是它会修剪所有前导(但不是尾随空格),即使明确存在于模板中也是如此。

E.g。使用以下模板文件:

$ 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的情况下保留模板文件中的空格(因为它有this problem)?

0 个答案:

没有答案