-
Notifications
You must be signed in to change notification settings - Fork 0
/
dotName.classic-untested.js
38 lines (36 loc) · 966 Bytes
/
dotName.classic-untested.js
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
EZ.dotName = function EZdotName(dotName, quote)
{
if (this instanceof EZdotName === false)
return new EZdotName(dotName, quote);
this._quote = quote || '';
this._dotName = [dotName + '' || '$'];
this.toString = function(key, quote)
{
var dotName = (!key) ? this._dotName
: this._dotName.concat( this.format(key, quote) )
return dotName.join('');
}
this.add = function(key, quote)
{
this._dotName.push( this.format(key, quote) );
return dotName.toString();
}
this.get = function(key, quote)
{
return dotName.toString(key, quote);
}
this.clone = function(key, quote)
{
var dotName = new EZ.dotName(this._dotName, quote || this._quote)
if (key)
this._dotName.push( this.format(key, quote) );
return dotName;
}
this.format = function(key, quote)
{
quote = quote || this._quote;
return (!isNaN(key)) ? '[' + key + ']'
: (/^[A-Z_$][\w_$]*$/i.test(key)) ? '.' + key
: key.wrap("["+quote, quote + "]");
}
}