-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtuple.js
123 lines (99 loc) · 2.32 KB
/
tuple.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
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/**
* Object Tuple
* @version: 1.0
* @date: Thu Aug 02 03:00:00 2012
**/
var Tuple = (function(__object__)
{
var __init__ = function() { },
__private__ = {
/*
- void data ( [ object Arguments ] );
*/
data: function(param) {
this.data[param[0]] = param[1];
}
};
__init__.prototype = {
constructor: Tuple,
/*
----------------------------------------------------------------------------------
Element access
----------------------------------------------------------------------------------
*/
/*
- * get ( [ String | Number name ] );
*/
get: function(name) {
return typeof name === 'string' || typeof name === 'number' ? this.data[name + ''] : this.data;
},
/*
----------------------------------------------------------------------------------
Capacity
----------------------------------------------------------------------------------
*/
/*
- Number size ( );
*/
size: function() {
return Object.keys(this.data).length;
},
/*
- Boolean empty ( );
*/
empty: function() {
return !this.size() > 0;
},
/*
----------------------------------------------------------------------------------
Modifiers
----------------------------------------------------------------------------------
*/
/*
- Function set ( );
*/
set: function() {
this.clear();
return this.add.apply(this, arguments);
},
/*
- Function add ( );
*/
add: function() {
__private__.data.call(this, arguments);
var push = function() {
__private__.data.call(this, arguments);
return push;
}.bind(this);
return push;
},
/*
- void tie ( );
*/
tie: function(object) {
var __own__ = __object__.hasOwnProperty;
if (__object__.toString.call(object) !== '[object Object]' && !__own__.call(object, 'data'))
throw new TypeError(object + ' : is not object');
var data = object.data;
for (var i in data) {
if (__own__.call(data, i))
this.data[i] = data[i];
}
},
/*
- &remove ( );
*/
remove: function(name) {
if (typeof name == 'string')
delete this.data[name];
return this;
},
/*
- void clear ( );
*/
clear: function() {
this.data = {};
}
};
return __init__;
}(Object.prototype));