12
12
* [ .prev(object)] ( #module_symbol-tree--SymbolTree+prev ) ⇒ <code >Object</code >
13
13
* [ .next(object)] ( #module_symbol-tree--SymbolTree+next ) ⇒ <code >Object</code >
14
14
* [ .parent(object)] ( #module_symbol-tree--SymbolTree+parent ) ⇒ <code >Object</code >
15
+ * [ .lastInclusiveDescendant(object)] ( #module_symbol-tree--SymbolTree+lastInclusiveDescendant ) ⇒ <code >Object</code >
16
+ * [ .preceding(object, [ treeRoot] )] ( #module_symbol-tree--SymbolTree+preceding ) ⇒ <code >Object</code >
17
+ * [ .following(object, [ treeRoot] , [ skipChildren] )] ( #module_symbol-tree--SymbolTree+following ) ⇒ <code >Object</code >
18
+ * [ .childrenToArray(parent, [ array] , [ filter] , [ thisArg] )] ( #module_symbol-tree--SymbolTree+childrenToArray ) ⇒ <code >Array.< ; Object> ; </code >
19
+ * [ .ancestorsToArray(object, [ array] , [ filter] , [ thisArg] )] ( #module_symbol-tree--SymbolTree+ancestorsToArray ) ⇒ <code >Array.< ; Object> ; </code >
20
+ * [ .treeToArray(root, [ array] , [ filter] , [ thisArg] )] ( #module_symbol-tree--SymbolTree+treeToArray ) ⇒ <code >Array.< ; Object> ; </code >
21
+ * [ .childrenIterator(parent)] ( #module_symbol-tree--SymbolTree+childrenIterator ) ⇒ <code >Object</code >
22
+ * [ .ancestorsIterator(object)] ( #module_symbol-tree--SymbolTree+ancestorsIterator ) ⇒ <code >Object</code >
23
+ * [ .treeIterator(root)] ( #module_symbol-tree--SymbolTree+treeIterator ) ⇒ <code >Object</code >
24
+ * [ .index(child)] ( #module_symbol-tree--SymbolTree+index ) ⇒ <code >Number</code >
25
+ * [ .childrenCount(parent)] ( #module_symbol-tree--SymbolTree+childrenCount ) ⇒ <code >Number</code >
15
26
* [ .remove(removeObject)] ( #module_symbol-tree--SymbolTree+remove ) ⇒ <code >Object</code >
16
27
* [ .insertBefore(newObject, referenceObject)] ( #module_symbol-tree--SymbolTree+insertBefore ) ⇒ <code >Object</code >
17
28
* [ .insertAfter(newObject, referenceObject)] ( #module_symbol-tree--SymbolTree+insertAfter ) ⇒ <code >Object</code >
31
42
<a name =" module_symbol-tree--SymbolTree+initialize " ></a >
32
43
#### symbolTree.initialize(object) ⇒ <code >Object</code >
33
44
You can optionally initialize an object after its creation,
34
- to take advantage of fast properties
45
+ to take advantage of V8's fast properties. Also useful if you would like to
46
+ freeze your object.
47
+
48
+ ` O(1) `
35
49
36
50
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
37
51
** Returns** : <code >Object</code > - object
@@ -43,6 +57,7 @@ to take advantage of fast properties
43
57
<a name =" module_symbol-tree--SymbolTree+isEmpty " ></a >
44
58
#### symbolTree.isEmpty(object) ⇒ <code >Boolean</code >
45
59
Returns true if the object has any children.
60
+
46
61
` O(1) `
47
62
48
63
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -54,6 +69,7 @@ Returns true if the object has any children.
54
69
<a name =" module_symbol-tree--SymbolTree+first " ></a >
55
70
#### symbolTree.first(object) ⇒ <code >Object</code >
56
71
Return the first child of the given object.
72
+
57
73
` O(1) `
58
74
59
75
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -65,6 +81,7 @@ Return the first child of the given object.
65
81
<a name =" module_symbol-tree--SymbolTree+last " ></a >
66
82
#### symbolTree.last(object) ⇒ <code >Object</code >
67
83
Return the last child of the given object.
84
+
68
85
` O(1) `
69
86
70
87
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -76,6 +93,7 @@ Return the last child of the given object.
76
93
<a name =" module_symbol-tree--SymbolTree+prev " ></a >
77
94
#### symbolTree.prev(object) ⇒ <code >Object</code >
78
95
Return the previous sibling of the given object.
96
+
79
97
` O(1) `
80
98
81
99
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -87,6 +105,7 @@ Return the previous sibling of the given object.
87
105
<a name =" module_symbol-tree--SymbolTree+next " ></a >
88
106
#### symbolTree.next(object) ⇒ <code >Object</code >
89
107
Return the next sibling of the given object.
108
+
90
109
` O(1) `
91
110
92
111
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -98,6 +117,7 @@ Return the next sibling of the given object.
98
117
<a name =" module_symbol-tree--SymbolTree+parent " ></a >
99
118
#### symbolTree.parent(object) ⇒ <code >Object</code >
100
119
Return the parent of the given object.
120
+
101
121
` O(1) `
102
122
103
123
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -106,12 +126,168 @@ Return the parent of the given object.
106
126
| --- | --- |
107
127
| object | <code >Object</code > |
108
128
129
+ <a name =" module_symbol-tree--SymbolTree+lastInclusiveDescendant " ></a >
130
+ #### symbolTree.lastInclusiveDescendant(object) ⇒ <code >Object</code >
131
+ Find the inclusive descendant that is last in tree order of the given object.
132
+
133
+ ` O(n) ` (worst case)
134
+
135
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
136
+
137
+ | Param | Type |
138
+ | --- | --- |
139
+ | object | <code >Object</code > |
140
+
141
+ <a name =" module_symbol-tree--SymbolTree+preceding " ></a >
142
+ #### symbolTree.preceding(object, [ treeRoot] ) ⇒ <code >Object</code >
143
+ Find the preceding object (A) of the given object (B).
144
+ An object A is preceding an object B if A and B are in the same tree
145
+ and A comes before B in tree order.
146
+
147
+ ` O(n) ` (worst case)
148
+
149
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
150
+
151
+ | Param | Type | Description |
152
+ | --- | --- | --- |
153
+ | object | <code >Object</code > | |
154
+ | [ treeRoot] | <code >Object</code > | If set, ` treeRoot ` must be an inclusive ancestor of the return value (or else null is returned). This check _ assumes_ that ` root ` is also an inclusive ancestor of the given ` node ` |
155
+
156
+ <a name =" module_symbol-tree--SymbolTree+following " ></a >
157
+ #### symbolTree.following(object, [ treeRoot] , [ skipChildren] ) ⇒ <code >Object</code >
158
+ Find the following object (A) of the given object (B).
159
+ An object A is following an object B if A and B are in the same tree
160
+ and A comes after B in tree order.
161
+
162
+ ` O(n) ` (worst case)
163
+
164
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
165
+
166
+ | Param | Type | Default | Description |
167
+ | --- | --- | --- | --- |
168
+ | object | <code >Object</code > | | |
169
+ | [ treeRoot] | <code >Object</code > | | If set, ` treeRoot ` must be an inclusive ancestor of the return value (or else null is returned). This check _ assumes_ that ` root ` is also an inclusive ancestor of the given ` node ` |
170
+ | [ skipChildren] | <code >Boolean</code > | <code >false</code > | If set, ignore the childen of ` object ` |
171
+
172
+ <a name =" module_symbol-tree--SymbolTree+childrenToArray " ></a >
173
+ #### symbolTree.childrenToArray(parent, [ array] , [ filter] , [ thisArg] ) ⇒ <code >Array.< ; Object> ; </code >
174
+ Append all children of the given object to an array.
175
+
176
+ ` O(n) `
177
+
178
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
179
+
180
+ | Param | Type | Default | Description |
181
+ | --- | --- | --- | --- |
182
+ | parent | <code >Object</code > | | |
183
+ | [ array] | <code >Array.< ; Object> ; </code > | <code >[ ] </code > | |
184
+ | [ filter] | <code >function</code > | | Function to test each object before it is added to the array. Invoked with arguments (object). Should return ` true ` if an object is to be included. |
185
+ | [ thisArg] | <code >\* </code > | | Value to use as ` this ` when executing ` filter ` . |
186
+
187
+ <a name =" module_symbol-tree--SymbolTree+ancestorsToArray " ></a >
188
+ #### symbolTree.ancestorsToArray(object, [ array] , [ filter] , [ thisArg] ) ⇒ <code >Array.< ; Object> ; </code >
189
+ Append all inclusive ancestors of the given object to an array.
190
+
191
+ ` O(n) `
192
+
193
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
194
+
195
+ | Param | Type | Default | Description |
196
+ | --- | --- | --- | --- |
197
+ | object | <code >Object</code > | | |
198
+ | [ array] | <code >Array.< ; Object> ; </code > | <code >[ ] </code > | |
199
+ | [ filter] | <code >function</code > | | Function to test each object before it is added to the array. Invoked with arguments (object). Should return ` true ` if an object is to be included. |
200
+ | [ thisArg] | <code >\* </code > | | Value to use as ` this ` when executing ` filter ` . |
201
+
202
+ <a name =" module_symbol-tree--SymbolTree+treeToArray " ></a >
203
+ #### symbolTree.treeToArray(root, [ array] , [ filter] , [ thisArg] ) ⇒ <code >Array.< ; Object> ; </code >
204
+ Append all descendants of the given object to an array (in tree order).
205
+
206
+ ` O(n) `
207
+
208
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
209
+
210
+ | Param | Type | Default | Description |
211
+ | --- | --- | --- | --- |
212
+ | root | <code >Object</code > | | |
213
+ | [ array] | <code >Array.< ; Object> ; </code > | <code >[ ] </code > | |
214
+ | [ filter] | <code >function</code > | | Function to test each object before it is added to the array. Invoked with arguments (object). Should return ` true ` if an object is to be included. |
215
+ | [ thisArg] | <code >\* </code > | | Value to use as ` this ` when executing ` filter ` . |
216
+
217
+ <a name =" module_symbol-tree--SymbolTree+childrenIterator " ></a >
218
+ #### symbolTree.childrenIterator(parent) ⇒ <code >Object</code >
219
+ Iterate over all children of the given object to an array.
220
+
221
+ ` O(1) ` for a single iteration
222
+
223
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
224
+ ** Returns** : <code >Object</code > - An iterable iterator (ES6)
225
+
226
+ | Param | Type |
227
+ | --- | --- |
228
+ | parent | <code >Object</code > |
229
+
230
+ <a name =" module_symbol-tree--SymbolTree+ancestorsIterator " ></a >
231
+ #### symbolTree.ancestorsIterator(object) ⇒ <code >Object</code >
232
+ Iterate over all inclusive ancestors of the given object
233
+
234
+ ` O(1) ` for a single iteration
235
+
236
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
237
+ ** Returns** : <code >Object</code > - An iterable iterator (ES6)
238
+
239
+ | Param | Type |
240
+ | --- | --- |
241
+ | object | <code >Object</code > |
242
+
243
+ <a name =" module_symbol-tree--SymbolTree+treeIterator " ></a >
244
+ #### symbolTree.treeIterator(root) ⇒ <code >Object</code >
245
+ Iterate over all descendants of the given object (in tree order).
246
+
247
+ ` O(n) ` for the entire iteration<br >
248
+ ` O(n) ` for a single iteration (worst case)
249
+
250
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
251
+ ** Returns** : <code >Object</code > - An iterable iterator (ES6)
252
+
253
+ | Param | Type |
254
+ | --- | --- |
255
+ | root | <code >Object</code > |
256
+
257
+ <a name =" module_symbol-tree--SymbolTree+index " ></a >
258
+ #### symbolTree.index(child) ⇒ <code >Number</code >
259
+ Find the index of the given object (the number of preceding siblings).
260
+
261
+ ` O(n) ` <br >
262
+ ` O(1) ` (cached)
263
+
264
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
265
+ ** Returns** : <code >Number</code > - The number of preceding siblings, or -1 if the object has no parent
266
+
267
+ | Param | Type |
268
+ | --- | --- |
269
+ | child | <code >Object</code > |
270
+
271
+ <a name =" module_symbol-tree--SymbolTree+childrenCount " ></a >
272
+ #### symbolTree.childrenCount(parent) ⇒ <code >Number</code >
273
+ Calculate the number of children.
274
+
275
+ ` O(n) ` <br >
276
+ ` O(1) ` (cached)
277
+
278
+ ** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
279
+
280
+ | Param |
281
+ | --- |
282
+ | parent |
283
+
109
284
<a name =" module_symbol-tree--SymbolTree+remove " ></a >
110
285
#### symbolTree.remove(removeObject) ⇒ <code >Object</code >
111
286
Remove the object from this tree.
112
- ` O(1) `
113
287
Has no effect if already removed.
114
288
289
+ ` O(1) `
290
+
115
291
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
116
292
** Returns** : <code >Object</code > - removeObject
117
293
@@ -122,8 +298,9 @@ Has no effect if already removed.
122
298
<a name =" module_symbol-tree--SymbolTree+insertBefore " ></a >
123
299
#### symbolTree.insertBefore(newObject, referenceObject) ⇒ <code >Object</code >
124
300
Insert the given object before the reference object.
301
+ ` newObject ` is now the previous sibling of ` referenceObject ` .
302
+
125
303
` O(1) `
126
- ` newObject ` is now the previous sibling of ` referenceObject `
127
304
128
305
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
129
306
** Returns** : <code >Object</code > - newObject
@@ -140,8 +317,9 @@ Insert the given object before the reference object.
140
317
<a name =" module_symbol-tree--SymbolTree+insertAfter " ></a >
141
318
#### symbolTree.insertAfter(newObject, referenceObject) ⇒ <code >Object</code >
142
319
Insert the given object after the reference object.
320
+ ` newObject ` is now the next sibling of ` referenceObject ` .
321
+
143
322
` O(1) `
144
- ` newObject ` is now the next sibling of ` referenceObject `
145
323
146
324
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
147
325
** Returns** : <code >Object</code > - newObject
@@ -158,8 +336,9 @@ Insert the given object after the reference object.
158
336
<a name =" module_symbol-tree--SymbolTree+insertFirst " ></a >
159
337
#### symbolTree.insertFirst(newObject, referenceObject) ⇒ <code >Object</code >
160
338
Insert the given object as the first child of the given reference object.
339
+ ` newObject ` is now the first child of ` referenceObject ` .
340
+
161
341
` O(1) `
162
- ` newObject ` is now the first child of ` referenceObject `
163
342
164
343
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
165
344
** Returns** : <code >Object</code > - newObject
@@ -176,8 +355,9 @@ Insert the given object as the first child of the given reference object.
176
355
<a name =" module_symbol-tree--SymbolTree+insertLast " ></a >
177
356
#### symbolTree.insertLast(newObject, referenceObject) ⇒ <code >Object</code >
178
357
Insert the given object as the last child of the given reference object.
358
+ ` newObject ` is now the last child of ` referenceObject ` .
359
+
179
360
` O(1) `
180
- ` newObject ` is now the last child of ` referenceObject `
181
361
182
362
** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
183
363
** Returns** : <code >Object</code > - newObject
0 commit comments