velocity语句_简易缩进格式化程序

velocity中常常会写出#foreach #if #else #end等语句,
但由于模板文件中html本身就带有缩进,所以最终的缩进,并不符合velocity语句的含义。当主要针对velocity逻辑阅读时,很不方便。
本文提供一个25行的java程序,用来针对以上关键velocity关键词,进行缩进格式化,效果:


velocity语句_简易缩进格式化程序_第1张图片
效果

代码:


velocity语句_简易缩进格式化程序_第2张图片
代码
public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader("input.html"));
    FileWriter fw = new FileWriter("output.html");
    int nextSpaceNum = 0;
    for (String s = br.readLine(); null != s; s = br.readLine()) {
        s = s.trim();
        int spaceNum = nextSpaceNum;
        if (s.contains("#if") || s.contains("#foreach")) {
            nextSpaceNum++;
        }
        if (s.contains("#end") || s.startsWith("#else")) {
            nextSpaceNum--;
            nextSpaceNum &= (~nextSpaceNum >> 31);
            spaceNum = nextSpaceNum;
        }
        for (int i = 0; i < spaceNum; i++) {
            fw.write("\t");
        }
        if (!s.contains("#end") && s.startsWith("#else")) {
            fw.write("  ");
            nextSpaceNum++;
        }
        fw.write(s + "\n");
    }
    br.close();
    fw.close();
}

你可能感兴趣的:(velocity语句_简易缩进格式化程序)