1212 * [ .prev(object)] ( #module_symbol-tree--SymbolTree+prev ) ⇒ <code >Object</code >
1313 * [ .next(object)] ( #module_symbol-tree--SymbolTree+next ) ⇒ <code >Object</code >
1414 * [ .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 >
1526 * [ .remove(removeObject)] ( #module_symbol-tree--SymbolTree+remove ) ⇒ <code >Object</code >
1627 * [ .insertBefore(newObject, referenceObject)] ( #module_symbol-tree--SymbolTree+insertBefore ) ⇒ <code >Object</code >
1728 * [ .insertAfter(newObject, referenceObject)] ( #module_symbol-tree--SymbolTree+insertAfter ) ⇒ <code >Object</code >
3142<a name =" module_symbol-tree--SymbolTree+initialize " ></a >
3243#### symbolTree.initialize(object) ⇒ <code >Object</code >
3344You 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) `
3549
3650** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
3751** Returns** : <code >Object</code > - object
@@ -43,6 +57,7 @@ to take advantage of fast properties
4357<a name =" module_symbol-tree--SymbolTree+isEmpty " ></a >
4458#### symbolTree.isEmpty(object) ⇒ <code >Boolean</code >
4559Returns true if the object has any children.
60+
4661` O(1) `
4762
4863** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -54,6 +69,7 @@ Returns true if the object has any children.
5469<a name =" module_symbol-tree--SymbolTree+first " ></a >
5570#### symbolTree.first(object) ⇒ <code >Object</code >
5671Return the first child of the given object.
72+
5773` O(1) `
5874
5975** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -65,6 +81,7 @@ Return the first child of the given object.
6581<a name =" module_symbol-tree--SymbolTree+last " ></a >
6682#### symbolTree.last(object) ⇒ <code >Object</code >
6783Return the last child of the given object.
84+
6885` O(1) `
6986
7087** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -76,6 +93,7 @@ Return the last child of the given object.
7693<a name =" module_symbol-tree--SymbolTree+prev " ></a >
7794#### symbolTree.prev(object) ⇒ <code >Object</code >
7895Return the previous sibling of the given object.
96+
7997` O(1) `
8098
8199** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -87,6 +105,7 @@ Return the previous sibling of the given object.
87105<a name =" module_symbol-tree--SymbolTree+next " ></a >
88106#### symbolTree.next(object) ⇒ <code >Object</code >
89107Return the next sibling of the given object.
108+
90109` O(1) `
91110
92111** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -98,6 +117,7 @@ Return the next sibling of the given object.
98117<a name =" module_symbol-tree--SymbolTree+parent " ></a >
99118#### symbolTree.parent(object) ⇒ <code >Object</code >
100119Return the parent of the given object.
120+
101121` O(1) `
102122
103123** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
@@ -106,12 +126,168 @@ Return the parent of the given object.
106126| --- | --- |
107127| object | <code >Object</code > |
108128
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+
109284<a name =" module_symbol-tree--SymbolTree+remove " ></a >
110285#### symbolTree.remove(removeObject) ⇒ <code >Object</code >
111286Remove the object from this tree.
112- ` O(1) `
113287Has no effect if already removed.
114288
289+ ` O(1) `
290+
115291** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
116292** Returns** : <code >Object</code > - removeObject
117293
@@ -122,8 +298,9 @@ Has no effect if already removed.
122298<a name =" module_symbol-tree--SymbolTree+insertBefore " ></a >
123299#### symbolTree.insertBefore(newObject, referenceObject) ⇒ <code >Object</code >
124300Insert the given object before the reference object.
301+ ` newObject ` is now the previous sibling of ` referenceObject ` .
302+
125303` O(1) `
126- ` newObject ` is now the previous sibling of ` referenceObject `
127304
128305** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
129306** Returns** : <code >Object</code > - newObject
@@ -140,8 +317,9 @@ Insert the given object before the reference object.
140317<a name =" module_symbol-tree--SymbolTree+insertAfter " ></a >
141318#### symbolTree.insertAfter(newObject, referenceObject) ⇒ <code >Object</code >
142319Insert the given object after the reference object.
320+ ` newObject ` is now the next sibling of ` referenceObject ` .
321+
143322` O(1) `
144- ` newObject ` is now the next sibling of ` referenceObject `
145323
146324** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
147325** Returns** : <code >Object</code > - newObject
@@ -158,8 +336,9 @@ Insert the given object after the reference object.
158336<a name =" module_symbol-tree--SymbolTree+insertFirst " ></a >
159337#### symbolTree.insertFirst(newObject, referenceObject) ⇒ <code >Object</code >
160338Insert the given object as the first child of the given reference object.
339+ ` newObject ` is now the first child of ` referenceObject ` .
340+
161341` O(1) `
162- ` newObject ` is now the first child of ` referenceObject `
163342
164343** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
165344** Returns** : <code >Object</code > - newObject
@@ -176,8 +355,9 @@ Insert the given object as the first child of the given reference object.
176355<a name =" module_symbol-tree--SymbolTree+insertLast " ></a >
177356#### symbolTree.insertLast(newObject, referenceObject) ⇒ <code >Object</code >
178357Insert the given object as the last child of the given reference object.
358+ ` newObject ` is now the last child of ` referenceObject ` .
359+
179360` O(1) `
180- ` newObject ` is now the last child of ` referenceObject `
181361
182362** Kind** : instance method of <code >[ SymbolTree] ( #exp_module_symbol-tree--SymbolTree ) </code >
183363** Returns** : <code >Object</code > - newObject
0 commit comments