mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-14 00:25:54 +00:00
build custom layer of Dojo to speed up loading of tt-rss (refs #293)
This commit is contained in:
@@ -5,53 +5,160 @@
|
||||
*/
|
||||
|
||||
|
||||
if(!dojo._hasResource["dojo.string"]){
|
||||
dojo._hasResource["dojo.string"]=true;
|
||||
if(!dojo._hasResource["dojo.string"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
||||
dojo._hasResource["dojo.string"] = true;
|
||||
dojo.provide("dojo.string");
|
||||
dojo.string.rep=function(_1,_2){
|
||||
if(_2<=0||!_1){
|
||||
return "";
|
||||
}
|
||||
var _3=[];
|
||||
for(;;){
|
||||
if(_2&1){
|
||||
_3.push(_1);
|
||||
}
|
||||
if(!(_2>>=1)){
|
||||
break;
|
||||
}
|
||||
_1+=_1;
|
||||
}
|
||||
return _3.join("");
|
||||
|
||||
/*=====
|
||||
dojo.string = {
|
||||
// summary: String utilities for Dojo
|
||||
};
|
||||
dojo.string.pad=function(_4,_5,ch,_6){
|
||||
if(!ch){
|
||||
ch="0";
|
||||
}
|
||||
var _7=String(_4),_8=dojo.string.rep(ch,Math.ceil((_5-_7.length)/ch.length));
|
||||
return _6?_7+_8:_8+_7;
|
||||
=====*/
|
||||
|
||||
dojo.string.rep = function(/*String*/str, /*Integer*/num){
|
||||
// summary:
|
||||
// Efficiently replicate a string `n` times.
|
||||
// str:
|
||||
// the string to replicate
|
||||
// num:
|
||||
// number of times to replicate the string
|
||||
|
||||
if(num <= 0 || !str){ return ""; }
|
||||
|
||||
var buf = [];
|
||||
for(;;){
|
||||
if(num & 1){
|
||||
buf.push(str);
|
||||
}
|
||||
if(!(num >>= 1)){ break; }
|
||||
str += str;
|
||||
}
|
||||
return buf.join(""); // String
|
||||
};
|
||||
dojo.string.substitute=function(_9,_a,_b,_c){
|
||||
_c=_c||dojo.global;
|
||||
_b=_b?dojo.hitch(_c,_b):function(v){
|
||||
return v;
|
||||
|
||||
dojo.string.pad = function(/*String*/text, /*Integer*/size, /*String?*/ch, /*Boolean?*/end){
|
||||
// summary:
|
||||
// Pad a string to guarantee that it is at least `size` length by
|
||||
// filling with the character `ch` at either the start or end of the
|
||||
// string. Pads at the start, by default.
|
||||
// text:
|
||||
// the string to pad
|
||||
// size:
|
||||
// length to provide padding
|
||||
// ch:
|
||||
// character to pad, defaults to '0'
|
||||
// end:
|
||||
// adds padding at the end if true, otherwise pads at start
|
||||
// example:
|
||||
// | // Fill the string to length 10 with "+" characters on the right. Yields "Dojo++++++".
|
||||
// | dojo.string.pad("Dojo", 10, "+", true);
|
||||
|
||||
if(!ch){
|
||||
ch = '0';
|
||||
}
|
||||
var out = String(text),
|
||||
pad = dojo.string.rep(ch, Math.ceil((size - out.length) / ch.length));
|
||||
return end ? out + pad : pad + out; // String
|
||||
};
|
||||
return _9.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_d,_e,_f){
|
||||
var _10=dojo.getObject(_e,false,_a);
|
||||
if(_f){
|
||||
_10=dojo.getObject(_f,false,_c).call(_c,_10,_e);
|
||||
}
|
||||
return _b(_10,_e).toString();
|
||||
});
|
||||
|
||||
dojo.string.substitute = function( /*String*/ template,
|
||||
/*Object|Array*/map,
|
||||
/*Function?*/ transform,
|
||||
/*Object?*/ thisObject){
|
||||
// summary:
|
||||
// Performs parameterized substitutions on a string. Throws an
|
||||
// exception if any parameter is unmatched.
|
||||
// template:
|
||||
// a string with expressions in the form `${key}` to be replaced or
|
||||
// `${key:format}` which specifies a format function. keys are case-sensitive.
|
||||
// map:
|
||||
// hash to search for substitutions
|
||||
// transform:
|
||||
// a function to process all parameters before substitution takes
|
||||
// place, e.g. mylib.encodeXML
|
||||
// thisObject:
|
||||
// where to look for optional format function; default to the global
|
||||
// namespace
|
||||
// example:
|
||||
// Substitutes two expressions in a string from an Array or Object
|
||||
// | // returns "File 'foo.html' is not found in directory '/temp'."
|
||||
// | // by providing substitution data in an Array
|
||||
// | dojo.string.substitute(
|
||||
// | "File '${0}' is not found in directory '${1}'.",
|
||||
// | ["foo.html","/temp"]
|
||||
// | );
|
||||
// |
|
||||
// | // also returns "File 'foo.html' is not found in directory '/temp'."
|
||||
// | // but provides substitution data in an Object structure. Dotted
|
||||
// | // notation may be used to traverse the structure.
|
||||
// | dojo.string.substitute(
|
||||
// | "File '${name}' is not found in directory '${info.dir}'.",
|
||||
// | { name: "foo.html", info: { dir: "/temp" } }
|
||||
// | );
|
||||
// example:
|
||||
// Use a transform function to modify the values:
|
||||
// | // returns "file 'foo.html' is not found in directory '/temp'."
|
||||
// | dojo.string.substitute(
|
||||
// | "${0} is not found in ${1}.",
|
||||
// | ["foo.html","/temp"],
|
||||
// | function(str){
|
||||
// | // try to figure out the type
|
||||
// | var prefix = (str.charAt(0) == "/") ? "directory": "file";
|
||||
// | return prefix + " '" + str + "'";
|
||||
// | }
|
||||
// | );
|
||||
// example:
|
||||
// Use a formatter
|
||||
// | // returns "thinger -- howdy"
|
||||
// | dojo.string.substitute(
|
||||
// | "${0:postfix}", ["thinger"], null, {
|
||||
// | postfix: function(value, key){
|
||||
// | return value + " -- howdy";
|
||||
// | }
|
||||
// | }
|
||||
// | );
|
||||
|
||||
thisObject = thisObject || dojo.global;
|
||||
transform = transform ?
|
||||
dojo.hitch(thisObject, transform) : function(v){ return v; };
|
||||
|
||||
return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,
|
||||
function(match, key, format){
|
||||
var value = dojo.getObject(key, false, map);
|
||||
if(format){
|
||||
value = dojo.getObject(format, false, thisObject).call(thisObject, value, key);
|
||||
}
|
||||
return transform(value, key).toString();
|
||||
}); // String
|
||||
};
|
||||
dojo.string.trim=String.prototype.trim?dojo.trim:function(str){
|
||||
str=str.replace(/^\s+/,"");
|
||||
for(var i=str.length-1;i>=0;i--){
|
||||
if(/\S/.test(str.charAt(i))){
|
||||
str=str.substring(0,i+1);
|
||||
break;
|
||||
|
||||
/*=====
|
||||
dojo.string.trim = function(str){
|
||||
// summary:
|
||||
// Trims whitespace from both sides of the string
|
||||
// str: String
|
||||
// String to be trimmed
|
||||
// returns: String
|
||||
// Returns the trimmed string
|
||||
// description:
|
||||
// This version of trim() was taken from [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript).
|
||||
// The short yet performant version of this function is dojo.trim(),
|
||||
// which is part of Dojo base. Uses String.prototype.trim instead, if available.
|
||||
return ""; // String
|
||||
}
|
||||
}
|
||||
return str;
|
||||
};
|
||||
=====*/
|
||||
|
||||
dojo.string.trim = String.prototype.trim ?
|
||||
dojo.trim : // aliasing to the native function
|
||||
function(str){
|
||||
str = str.replace(/^\s+/, '');
|
||||
for(var i = str.length - 1; i >= 0; i--){
|
||||
if(/\S/.test(str.charAt(i))){
|
||||
str = str.substring(0, i + 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return str;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user