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

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


效果

代码:


代码
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();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 传送门 解读阿里Java开发手册(v1.1.1) - 异常日志 前言 阿里Java开发手册谈不上圣经,但确实是大量...
    kelgon阅读 4,404评论 4 50
  • 来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一...
    小向资源网阅读 7,709评论 0 12
  • 这一年,我什么都没有做,却学会了享受生活。好多该做的事情都成了借口,没有完成……活活的把生活变成了习惯,习惯了毫无...
    Alice梵阅读 222评论 0 0
  • 白炽灯的一生说的最多的恐怕就是“念chì,白翅灯,不是白痴灯。” 他的出厂日期在八月底,是个处女座。每次他纠正别人...
    碎弦阅读 347评论 0 1
  • 此时圣诞夜,脑袋与四肢感觉懵懵地,坐在上海租房的电脑桌前继续码字记录。 昨晚依然敲码至凌晨,入睡时小何还在失眠,然...
    二石兄阅读 218评论 0 1