| Не надоть мне Гугла, он пригрывает в размере. Вот пример:
// script.aculo.us builder.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
//
// script.aculo.us is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/
var Builder = {
NODEMAP: {
AREA: 'map',
CAPTION: 'table',
COL: 'table',
COLGROUP: 'table',
LEGEND: 'fieldset',
OPTGROUP: 'select',
OPTION: 'select',
PARAM: 'object',
TBODY: 'table',
TD: 'table',
TFOOT: 'table',
TH: 'table',
THEAD: 'table',
TR: 'table'
},
// note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
// due to a Firefox bug
node: function(elementName) {
elementName = elementName.toUpperCase();
// try innerHTML approach
var parentTag = this.NODEMAP[elementName] || 'div';
var parentElement = document.createElement(parentTag);
try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
} catch(e) {}
var element = parentElement.firstChild || null;
// see if browser added wrapping tags
if(element && (element.tagName.toUpperCase() != elementName))
element = element.getElementsByTagName(elementName)[0];
// fallback to createElement approach
if(!element) element = document.createElement(elementName);
// abort if nothing could be created
if(!element) return;
// attributes (or text)
if(arguments[1])
if(this._isStringOrNumber(arguments[1]) ||
(arguments[1] instanceof Array) ||
arguments[1].tagName) {
this._children(element, arguments[1]);
} else {
var attrs = this._attributes(arguments[1]);
if(attrs.length) {
try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
parentElement.innerHTML = "<" +elementName + " " +
attrs + "></" + elementName + ">";
} catch(e) {}
element = parentElement.firstChild || null;
// workaround firefox 1.0.X bug
if(!element) {
element = document.createElement(elementName);
for(attr in arguments[1])
element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
}
if(element.tagName.toUpperCase() != elementName)
element = parentElement.getElementsByTagName(elementName)[0];
}
}
// text, or array of children
if(arguments[2])
this._children(element, arguments[2]);
return element;
},
_text: function(text) {
return document.createTextNode(text);
},
ATTR_MAP: {
'className': 'class',
'htmlFor': 'for'
},
_attributes: function(attributes) {
var attrs = [];
for(attribute in attributes)
attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
'="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'"') + '"');
return attrs.join(" ");
},
_children: function(element, children) {
if(children.tagName) {
element.appendChild(children);
return;
}
if(typeof children=='object') { // array can hold nodes and text
children.flatten().each( function(e) {
if(typeof e=='object')
element.appendChild(e)
else
if(Builder._isStringOrNumber(e))
element.appendChild(Builder._text(e));
});
} else
if(Builder._isStringOrNumber(children))
element.appendChild(Builder._text(children));
},
_isStringOrNumber: function(param) {
return(typeof param=='string' || typeof param=='number');
},
build: function(html) {
var element = this.node('div');
$(element).update(html.strip());
return element.down();
},
dump: function(scope) {
if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope
var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
tags.each( function(tag){
scope[tag] = function() {
return Builder.node.apply(Builder, [tag].concat($A(arguments)));
}
});
}
}
Результат:
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(c/a))+String.fromCharCode(c%a+161)};while(c--){if(k[c]){p=p.replace(new RegExp(e(c),'g'),k[c])}}return p}('§ ª={Ð:{Û:\'ã\',Ê:\'¦\',Ä:\'¦\',Å:\'¦\',á:\'è\',Ó:\'Ç\',Ò:\'Ç\',Õ:\'µ\',È:\'¦\',É:\'¦\',Î:\'¦\',Ë:\'¦\',Ì:\'¦\',Í:\'¦\'},Â:¥(£){£=£.·();§ Ã=©.Ð[£]||\'Ü\';§ ®=².Á(Ã);Ï{®.Ñ="<"+£+"></"+£+">"}Ô(e){}§ ¡=®.Ö||×;¢(¡&&(¡.±.·()!=£))¡=¡.Ø(£)[0];¢(!¡)¡=².Á(£);¢(!¡)¨;¢(¤[1])¢(©.³(¤[1])||(¤[1]ú ù)||¤[1].±){©.»(¡,¤[1])}¾{§ =©.Ý(¤[1]);¢(.ï){Ï{®.Ñ="<"+£+" "++"></"+£+">"}Ô(e){}¡=®.Ö||×;¢(!¡){¡=².Á(£);¿(´ ¹ ¤[1])¡[´==\'à\'?\'ß\':´]=¤[1][´]}¢(¡.±.·()!=£)¡=®.Ø(£)[0]}}¢(¤[2])©.»(¡,¤[2]);¨ ¡},¼:¥(Ú){¨ ².ñ(Ú)},º:{\'ß\':\'à\',\'ò\':\'¿\'},Ý:¥(½){§ =[];¿(¯ ¹ ½).ð((¯ ¹ ©.º?©.º[¯]:¯)+\'="\'+½[¯].ì().í().î(/"/,\'&ó;\')+\'"\');¨ .ô(" ")},»:¥(¡,«){¢(«.±){¡.¶(«);¨}¢(¬ «==\'µ\'){«.ë().Þ(¥(e){¢(¬ e==\'µ\')¡.¶(e)¾ ¢(ª.³(e))¡.¶(ª.¼(e))})}¾ ¢(ª.³(«))¡.¶(ª.¼(«))},³:¥(¸){¨(¬ ¸==\'ø\'||¬ ¸==\'÷\')},õ:¥(Ù){§ ¡=©.Â(\'Ü\');$(¡).ö(Ù.û());¨ ¡.â()},ê:¥(°){¢(¬ °!=\'µ\'&&¬ °!=\'¥\')°=é;§ Æ=("A ç æ ä å Û B ¢á ¢Ë ¢Ê ¢Ì ¢Í ¢Ï "+"¢Î ¢É Ê ¢È ¢Ã ü Ä Å ¢Â ¢Á ¢Ä ¢Å ¢Ç ¢Æ ¢Ð ¢Ñ ¢Ü "+"¢Û ¢Ý ¢Þ ¢à ¢ß ¢Ú ¢Ù ¢Ô ¢Ó ¢Ò ¢Õ ¢Ö ¢Ø I ¢× ¢À ¢¿ ¢© ¢¨ "+"¢§ ¢ª á ¢« ¢ ¢¬ ¢¦ ¢¥ ÿ þ ý ¢¡ Ó Ò P "+"Õ ¢¢ Q S ¢¤ ¢£ ¢® ¢¯ ¢º ¢¹ ¢» ¢¼ ¢¾ ¢½ ¢¸ È É "+"¢· Î Ë Ì ¢² Í ¢± U ¢° ¢³").¢´(/\\s+/);Æ.Þ(¥(À){°[À]=¥(){¨ ª.Â.¢¶(ª,[À].¢µ(A(¤)))}})}}',95,160,'element|if|elementName|arguments|function|table|var|return|this|Builder|children|typeof|attrs|parentElement|attribute|scope|tagName|document|_0|attr|object|appendChild|toUpperCase|param|in|ATTR_MAP|_1|_2|attributes|else|for|tag|createElement|node|parentTag|COL|COLGROUP|tags|select|TBODY|TD|CAPTION|TH|THEAD|TR|TFOOT|try|NODEMAP|innerHTML|OPTION|OPTGROUP|catch|PARAM|firstChild|null|getElementsByTagName|html|text|AREA|div|_3|each|className|class|LEGEND|down|map|ADDRESS|APPLET|ACRONYM|ABBR|fieldset|window|dump|flatten|toString|escapeHTML|gsub|length|push|createTextNode|htmlFor|quot|join|build|update|number|string|Array|instanceof|strip|CODE|OBJECT|NOSCRIPT|NOFRAMES|OL|PRE|SCRIPT|SAMP|META|MENU|KBD|ISINDEX|INS|LABEL|LI|MAP|LINK|SELECT|SMALL|UL|TT|TITLE|VAR|split|concat|apply|TEXTAREA|TABLE|STRIKE|SPAN|STRONG|STYLE|SUP|SUB|INPUT|IMG|DEL|DD|CITE|DFN|DIR|DL|DIV|CENTER|BUTTON|BDO|BASEFONT|BIG|BLOCKQUOTE|BR|BODY|DT|EM|H6|H5|H4|HEAD|HR|IFRAME|HTML|H3|H2|FONT|FIELDSET|FORM|FRAME|H1|FRAMESET|BASE'.split('|')))
Правда тут применены спецсимволы при упаковке, и форум их сейчас почикает, но....
компрессия: 2371/4904 = 0.483
выполнение: 0.0163 s. | |