1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
};
}
|