compress.js
来自「JS编译工具」· JavaScript 代码 · 共 96 行
JS
96 行
function CompressForm(form,submit){
form.size.onblur=sizeValidateListener;
form.ratio.onblur=ratioValidateListener;
bindAvaliable(form,['syntaxCompression','trimBracket']);
bindAvaliable(form,['textCompression','compatible','size',"ratio"]);
updateSource(form.ownerDocument,form.source.value)
}
var keywords = {"for":true,"while":true,"if":true,"function":true}
CompressForm.prototype.updateSource = function(ownerDocument,value){
var debugCallRegExp = /(\bfunction\s+[\w\$\s]+)|([\w\$\s\.]+)\(/g;
var debugCallMap = {};
var match;
while(match = debugCallRegExp.exec(value)){
if(!match[1]){
match = match[2].replace(/\s*\.\s*/g,'.').replace(/^[\s\S]*\s+([\$\w])/,'$1');
if(/^[\w\$]+(?:[\w\$\.]+)+$/.test(match) && keywords[match]!=true){
debugCallMap[match] = debugCallMap[match]? debugCallMap[match]+1: 1;
}
}
}
var featureRegExp = /\bif\s*\(\s*!*\s*['"]([\w\$\.\:]+)['"]\s*\)/g;
var featureMap = {};
while(match = featureRegExp.exec(value)){
featureMap[matownerDocumentch[1]] = featureMap[match[1]]?featureMap[match[1]]+1 : 1;
}
updateList(ownerDocument.getElementById("debugCallList"),debugCallMap);
updateList(ownerDocument.getElementById("featrueList"),featureMap);
}
function updateList(container,keyMap){
var checkedMap = getCheckedMap(container);
var keys = keyMap instanceof Array?keyMap:getKeys(keyMap);
var buf = [];
for(var i=0;i<keys.length;i++){
var key = keys[i];
var id = container.id+"_" + key;
buf.push("<input type='checkbox' id='"+id+"' "+(checkedMap[key]?"checked":"")+"/>");
buf.push("<label for="+id+">"+key);
if(keyMap[key]){
buf.push("("+keyMap[key]+")");
}
buf.push("</label><br/>")
}
container.innerHTML = buf.join('\n');
}
function getCheckedMap(container){
var checkedMap = {};
var selected = container.getElementsByTagName("input");
var start = container.id.length+1;
var i= selected.length
while(i--){
checkedMap[selected[i].id.substr(start)] = selected[i].checked;
}
return checkedMap;
}
var debugCalls = ",$log.trace,$log.debug,alert,console.log,prompt,confirm,"
function getKeys(value){
var result = [];
for(var k in value){
result.push(k);
}
result.sort(function(a,b){
var off = debugCalls.indexOf(b)-debugCalls.indexOf(a);
if(off){
return off;
}
return a>b?1:a==b?0:-1;
});
return result;
}
function bindAvaliable(form,group){
form[group.shift()].onclick=function(){
var disabled = !this.checked;
var i = group.length;
while(i--){
form[group[i]].disabled = disabled;
}
}
}
function sizeValidateListener(){
return checkField(this,/^\d+$/,'size must be a int value');
}
function ratioValidateListener(){
return checkField(this,/^\d+(\.\d+)?$/,'ratio must be a float value')
}
function checkField(input,pattern,msg){
if(pattern.test(input.value)){
return true;
}else{
alert(msg)
input.focus();
input.select();
return false;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?