1. 手上有些JS代码,因为某种原因,起代码中没有任何回车、制表符。在编辑器中打开时,显示的就是一行。而我实现想研究和学习这些写得比较漂亮的JS代码,
2. 可是好想没有哪个编辑器自带了JS格式化的功能。它们都可以给JS着色,但就是不能控制代码格式,真是遗憾。
3. 我是我去网上搜看有没有前人做过这个东东,发现有个JS写的JS代码格式化工具,相当不错,可以给代码格式化,还可以着色。只不过结果都是显示在网页上,复制下来的时候那些制表符都没有了,所以贴到编辑器中时,代码还是比较混乱;而且这个每次只能格式话一个文件,还得自己手动去Copy & paste;而且因为是JS写的,速度也受到了不小的限制;
基于以上原因,我准备自己些一个小工具来格式化我需要的代码:
Section II: 功能
1. 因为很多编辑器都有JS的着色功能,所一我需要的仅仅是一个格式化功能而已,那就是主要将那种故意将代码中的空白符去掉的的JS加上换行、制表符等等。
大概有一下几种情况:
1). add \\n\\n before \"function\";
2). add \\n after \";\" (Except \"for\", and \";\" between \" \" which is part of a string in javascript. ) and \\t before the next line;
3). add \"\\n\" and \"\\t\" after \"{\";
4). add \"\\n\" and \"\\t\" before \"}\".
2. 不仅可以格式话一个给定的文件,还可以格式化给定的一个文件夹里的所有的JS文件。这个就是通过传给Main函数的参数来实现的。参数可以如下:
1)格式化一个文件:
-f path/file.js
或者:
--file path/file.js
2) 格式化给定的一个文件夹里的所有的JS文件
-d path/directory
或者:
--directory path/directory
举例:要格式化/home/newweapon/js/ 这个文件夹中的所有JS文件,可一使用如下命令:
JsFormatter -d /home/newweapon/js
Section III 缺陷
目前写的这个程序还是一个比较脆弱的程序。有很多情况没有考虑到,我在注释中把我想到的需要提高的基本都提了一下。但是因为我写这个小玩意主要是想把我自己下的一些JS代码格式化一下,而这个对我来说已经够用了,再加上自己的水平有限,所以没有将它写得很完美。等以后有时间了,再对这个
程序做一些更新。
Section IV 代码
/**
* cn.newweapon.JsFormatter
*/
package cn.newweapon;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern; [Page]
/**
* @author Newweapon @ ustc [Email: newweapon111 (at) gmail.com]
* @version 0.0.1
* @Created 20071015
*
* @TODO 1. user can specify the formatted file name;