diff options
Diffstat (limited to 'includes/js/dojo/string.js')
-rw-r--r-- | includes/js/dojo/string.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/includes/js/dojo/string.js b/includes/js/dojo/string.js new file mode 100644 index 0000000..a407744 --- /dev/null +++ b/includes/js/dojo/string.js @@ -0,0 +1,84 @@ +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 = { + // summary: String utilities for Dojo +}; +=====*/ + +dojo.string.pad = function(/*String*/text, /*int*/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 + + var out = String(text); + if(!ch){ + ch = '0'; + } + while(out.length < size){ + if(end){ + out += ch; + }else{ + out = ch + out; + } + } + return out; // String +}; + +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. + // description: + // For example, + // | dojo.string.substitute("File '${0}' is not found in directory '${1}'.",["foo.html","/temp"]); + // | dojo.string.substitute("File '${name}' is not found in directory '${info.dir}'.", + // | {name: "foo.html", info: {dir: "/temp"}}); + // both return + // | "File 'foo.html' is not found in directory '/temp'." + // template: + // a string with expressions in the form `${key}` to be replaced or + // `${key:format}` which specifies a format function. + // map: hash to search for substitutions + // transform: + // a function to process all parameters before substitution takes + // place, e.g. dojo.string.encodeXML + // thisObject: + // where to look for optional format function; default to the global + // namespace + + 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)(value);} + if(transform){ value = transform(value, key); } + return value.toString(); + }); // string +}; + +dojo.string.trim = function(/*String*/ str){ + // summary: trims whitespaces from both sides of the 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. + 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; // String +}; + +} |