package com.jfinal.zwy.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.mozilla.javascript.ErrorReporter;
import org.mozilla.javascript.EvaluatorException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
import com.yahoo.platform.yui.compressor.CssCompressor;
import com.yahoo.platform.yui.compressor.JavaScriptCompressor;
public class Compress {
//private static Logger log = LoggerFactory.getLogger(Compress.class);
public static void main(String[] args) throws Exception{
//字符串定位然后替换,然后拼接
/*String str = "必须由字字字母、数字及字字下划线组成,请重新输入!";
Pattern p = Pattern.compile("字字");
Matcher matcher = p.matcher(str);
StringBuffer sb = new StringBuffer("");
while(matcher.find()) {
String content = matcher.group(0);
System.out.println(content);
System.out.println(matcher.start() +":"+matcher.end());
matcher.appendReplacement(sb, "*******");
}
matcher.appendTail(sb);
System.out.println(sb.toString());
*/
String root = "D:/workplace/exam_weixin/webapp";
System.out.println(root);
FileInputStream input = new FileInputStream(root +File.separator+"js"+File.separator+"wx.js");
InputStreamReader in = new InputStreamReader(input,"UTF-8");
//定义压缩文件
JavaScriptCompressor compressor = new JavaScriptCompressor(in, new ErrorReporter() {
public void warning(String message, String sourceName,
int line, String lineSource, int lineOffset) {
if (line < 0) {
//log.error("\n[WARNING] " + message);
} else {
//log.error("\n[WARNING] " + line + ':' + lineOffset + ':' + message);
}
}
public void error(String message, String sourceName,
int line, String lineSource, int lineOffset) {
if (line < 0) {
//log.error("\n[ERROR] " + message);
} else {
//log.error("\n[ERROR] " + line + ':' + lineOffset + ':' + message);
}
}
public EvaluatorException runtimeError(String message, String sourceName,
int line, String lineSource, int lineOffset) {
error(message, sourceName, line, lineSource, lineOffset);
return new EvaluatorException(message);
}
});
Writer out = new OutputStreamWriter(new FileOutputStream(root +File.separator+"js"+File.separator+"wx-min.js"));
// nomunge: 混淆,verbose:显示信息消息和警告,preserveAllSemiColons:保留所有的分号 ,disableOptimizations 禁止优化
boolean munge = true, verbose = false, preserveAllSemiColons = false, disableOptimizations = false;
//进行js压缩
compressor.compress(out , -1, munge, verbose, preserveAllSemiColons, disableOptimizations);
out.close();
in.close();
//Css压缩
FileInputStream cssInput = new FileInputStream(root +File.separator+"css"+File.separator+"bootstrap.css");
InputStreamReader cssIn = new InputStreamReader(cssInput,"UTF-8");
CssCompressor cssCompress = new CssCompressor(cssIn);
Writer cssOut = new OutputStreamWriter(new FileOutputStream(root +File.separator+"css"+File.separator+"style-min.css"));
//进行css压缩
cssCompress.compress(cssOut, -1);
cssOut.close();
cssInput.close();
}
}