Javascript tree traversal and manipulation library (Forked from Nenad V. Nikolić, originally by Andrea Fiore)
- Version:
- 
		- 0.0.1
 
- Copyright:
- 
		- 2017 Vasiliy Altunin
 
- License:
- 
		- MIT
 
- Source:
Methods
- 
    <static> Arboreal( [parent] [, data] [, id] [, separator])
- 
    
    Creates Arboreal root tree object or child node object Parameters:Name Type Argument Description parentArboreal <optional> 
 Parent node dataObject <optional> 
 Data to store in node idString <optional> 
 node id separatorChar <optional> 
 separator for id numbers - Source:
 Returns:Arboreal object - Type
- Arboreal
 Example* var tree = new Arboreal(null,{category: 'JavaScript'}); console.log(tree.toString(true)); Result: 0 {"category":"JavaScript"}
- 
    <static> Arboreal.parse(object, childrenAttr, parent)
- 
    
    Parses Object and creates tree from it Parameters:Name Type Description objectObject Object to parse childrenAttrString name of object attr to use as children attr parentArboreal Parent node, if null new tree created - Source:
 Returns:Arboreal root object or parent object - Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; tree = Arboreal.parse(wikipediaJsCategory, 'subcategories'); Result: 0 {"category":"JavaScript"} |- 0/0 {"category":"Ajax (programming)"} |- 0/1 {"category":"JavaScript engines"} |- 0/2 {"category":"JavaScript programming languages family"} |- 0/2/0 {"category":"JavaScript dialect engines"} |- 0/3 {"category":"JavaScript based calendar components"} |- 0/4 {"category":"JavaScript based HTML editors"}
- 
    <static> Arboreal#appendChild(data [, id])
- 
    
    Appends child node to tree Parameters:Name Type Argument Description dataObject Data to store in node idString <optional> 
 Node id - Source:
 Returns:Arboreal root object or parent object - Type
- Arboreal
 Examplevar tree = new Arboreal(null,{category: 'JavaScript'}); tree.appendChild({category: 'Ajax (programming)'}); Result 0 {"category":"JavaScript"} |- 0/0 {"category":"Ajax (programming)"}
- 
    <static> Arboreal#appendChildren(data, childrenAttr)
- 
    
    Parse data and add it to thisnodeParameters:Name Type Description dataObject Object to be parsed childrenAttrString Attr to use as children attr - Source:
 Returns:Arboreal root object or parent object - Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; tree = Arboreal.parse(wikipediaJsCategory, 'subcategories'); var subCategory = { category: 'JavaScript ajax query', subcategories: [ {category: 'JSON'}, {category: 'jQuery'} ]}; tree.children[0].appendChildren(subCategory, 'subcategories'); console.log(tree.toString(true)); Result: 0 {"category":"JavaScript"} |- 0/0 {"category":"Ajax (programming)"} |- 0/0/0 {"category":"JavaScript ajax query"} |- 0/0/0/0 {"category":"JSON"} |- 0/0/0/1 {"category":"jQuery"} |- 0/1 {"category":"JavaScript engines"} |- 0/2 {"category":"JavaScript programming languages family"} |- 0/2/0 {"category":"JavaScript dialect engines"} |- 0/3 {"category":"JavaScript based calendar components"} |- 0/4 {"category":"JavaScript based HTML editors"}
- 
    <static> Arboreal#bubbleUp(iterator)
- 
    
    Traverse tree bubble up Parameters:Name Type Description iteratorfunction Iterator function - Source:
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; function iterator (node) { var depth = "", i; for (i = 1; i <= node.depth; i++) depth += ">>"; console.log([depth, node.data.category].join(" ")); } tree.children[2].children[0].bubbleUp(iterator); Result: >>>> JavaScript dialect engines >> JavaScript programming languages family JavaScript
- 
    <static> Arboreal#find(finder)
- 
    
    Finds node in tree by using iterator Parameters:Name Type Description finderfunction Iterator - Source:
 Returns:First match - Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; var result = tree.find(function (node) { return (/calendar/).test(node.data.category) }).data.category; console.log(result); Result: JavaScript based calendar components
- 
    <static> Arboreal#path(path [, separator])
- 
    
    Returns Arboreal for givent id path Parameters:Name Type Argument Description pathString Id string separatorChar <optional> 
 Separator to use - Source:
 Returns:Node finded by path - Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; var result = tree.path("/2/0").data.category; console.log(result); Result: JavaScript dialect engines
- 
    <static> Arboreal#remove()
- 
    
    Removes thisnode- Source:
 Returns:- Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; tree.children[0].remove(); console.log(tree.toString(true)); Result: 0 {"category":"JavaScript"} |- 0/1 {"category":"JavaScript engines"} |- 0/2 {"category":"JavaScript programming languages family"} |- 0/2/0 {"category":"JavaScript dialect engines"} |- 0/3 {"category":"JavaScript based calendar components"} |- 0/4 {"category":"JavaScript based HTML editors"}
- 
    <static> Arboreal#removeChild(arg)
- 
    
    Remove child node from thisnodeParameters:Name Type Description argString | Node Node id or Arboreal - Source:
 Returns:Arboreal - Type
- Arboreal
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; tree.removeChild(2); console.log(tree.toString(true)); Result: 0 {"category":"JavaScript"} |- 0/0 {"category":"Ajax (programming)"} |- 0/1 {"category":"JavaScript engines"} |- 0/3 {"category":"JavaScript based calendar components"} |- 0/4 {"category":"JavaScript based HTML editors"}
- 
    <static> Arboreal#toString( [isValue])
- 
    
    Retrns string representation of a tree Parameters:Name Type Argument Description isValueboolean <optional> 
 If true than data value printed - Source:
 Returns:- Type
- String
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; console.log(tree.toString()); Result: 0 |- 0/0 |- 0/1 |- 0/2 |- 0/2/0 |- 0/3 |- 0/4 If True passed as arg result changed: 0 {"category":"JavaScript"} |- 0/0 {"category":"Ajax (programming)"} |- 0/1 {"category":"JavaScript engines"} |- 0/2 {"category":"JavaScript programming languages family"} |- 0/2/0 {"category":"JavaScript dialect engines"} |- 0/3 {"category":"JavaScript based calendar components"} |- 0/4 {"category":"JavaScript based HTML editors"}
- 
    <static> Arboreal#traverseDown(iterator)
- 
    
    Traverse tree down Parameters:Name Type Description iteratorfunction Iterator function - Source:
 Example//Traverse and creating HTML list discribed in example //https://vasiliyaltunin.github.io/arboreal.js/examples var wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; function iterator (node) { var depth = "", i; for (i = 1; i <= node.depth; i++) depth += ">>"; console.log([depth, node.data.category].join(" ")); } tree.traverseDown(iterator); Result: JavaScript >> Ajax (programming) >> JavaScript engines >> JavaScript programming languages family >>>> JavaScript dialect engines >> JavaScript based calendar components >> JavaScript based HTML editors
- 
    <static> Arboreal#traverseUp(iterator)
- 
    
    Traverse tree up Parameters:Name Type Description iteratorfunction Iterator function - Source:
 Examplevar wikipediaJsCategory = { category: 'JavaScript', subcategories: [ {category: 'Ajax (programming)'}, {category: 'JavaScript engines'}, {category: 'JavaScript programming languages family', subcategories: [{ category: 'JavaScript dialect engines' }] }, {category: 'JavaScript based calendar components'}, {category: 'JavaScript based HTML editors'} ] }; function iterator (node) { var depth = "", i; for (i = 1; i <= node.depth; i++) depth += ">>"; console.log([depth, node.data.category].join(" ")); } tree.children[2].traverseUp(iterator); Result: >> JavaScript programming languages family >>>> JavaScript dialect engines JavaScript >> Ajax (programming) >> JavaScript engines >> JavaScript based calendar components >> JavaScript based HTML editors