1.1.5 • Published 9 years ago

treewalker v1.1.5

Weekly downloads
23
License
MIT
Repository
github
Last release
9 years ago

treewalker

Join the chat at https://gitter.im/Prashanth-Nelli/treewalker

NPM Version Build Status

A simple recursive tree walker

###how to use treewalker

treewalker exposes two methods walktree and resolveTree

####walktree:-

walktree expects three parameters parentnode,childkey,callback function

parentnode:- first one parent node it should be an object

childkey:- second one childkey is the key which holds the children of parentnode

for Example:-

	
	var node={
		name:'parent',
		childs:[{
			name:'child1'
			childs:[]
		}]
	}

in the above example childkey value should be childs and it should be same for children also

callback fn :-

after visiting each node in the parent node this callback function is called with visited node as a

parameter

Note:- this method should only used for traversing the tree and you visit every node in the tree.

so callback function should be used for logging the properties are storing node values into other variables.

in the callback u should not add any properties to object u get in the callback for those operations use the

		 resolveTree

####In Browser:-

var node = {
	name : 'parent',
  	childs : [{
	    name:'ch1',
	    childs:[{
	    name:'ch2',
	    childs:[]
	},{
	    name:'ch3',
	    childs:[]
	  }]
  	}]
};

function callback(obj) {
	console.log(obj.name);
}

window.walkTree(node,'childs',callback);	

output:-

parent
ch1
ch2
ch1
ch3
	

####In Node.js:-

	var tree = require('treewalker');

	var node = {
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : []
	}, {
		name : 'ch2',
		childs : []
	}, {
		name : 'ch3',
		childs : []
	}]
};

function callback(obj) {
	console.log(obj.name);
}

tree.walkTree(node, 'childs', callback);


output:-

parent
ch1
ch2
ch1
ch3

####resolveTree:-

resolveTree expects three parameters parentnode,childkey,callback function

parentnode:- first one parent node it should be an object

childkey:- second one childkey is the key which holds the children of parentnode

callback:- a function which will be called on every node in the tree. function should contain compare logic and it should return true when match found callback function will receive three parameters node,siblings,index.

   node:- the current node in the tree
   siblings:- childs of current node's parent which includes the current node.
   index:- current node's index position in the parent node's child array.
   	   this value can be used to delete that node along with all it's 
   	   children.

Examples:-

Node Addition:-

var myResult={};

var node = {
		name : 'parent',
		childs : [{
			name : 'ch1',
			childs : [{
				name : 'ch2',
				childs : []
			}, {
				name : 'ch3',
				childs : []
			}]
		}]
	};

	function callback(obj,siblings,index) {
		if(obj.name=="ch1"){
			obj.childs.push({
			   name : 'ch4',
			   childs : []
		     	});
		     return true;
		}
	};
	
	window.resolveTree(node, 'childs', callback);
	
	console.log(node);

####output:-

{
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : [{
			name : 'ch2',
			childs : []
		}, {
			name : 'ch3',
			childs : []
		},{
			name:'ch4',
			childs:[]
		}]
	}]
};	

####In Node.js:-

var tree = require('treewalker');

var myResult={};

var node = {
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : [{
			name : 'ch2',
			childs : []
		}, {
			name : 'ch3',
			childs : []
		}]
	}]
};

	function callback(obj,siblings,index) {
		if (obj.name == "ch1") {
			obj.childs.push({
			   name : 'ch4',
			   childs : []
			});
		return true;
	    }
	};
	
	tree.resolveTree(node, 'childs', callback);

	console.log(node);

####output:-

{
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : [{
			name : 'ch2',
			childs : []
		}, {
			name : 'ch3',
			childs : []
		},{
			name:'ch4',
			childs:[]
		}]
	}]
};	

Node Deletion:-

var node = {
		name : 'parent',
		childs : [{
			name : 'ch1',
			childs : [{
				name : 'ch2',
				childs : []
			}, {
				name : 'ch3',
				childs : []
			}]
		}]
	};

	function callback(obj,siblings,index) {
		if(obj.name === "ch1"){
		     siblings.splice(index,1);
		     return true;
		}
	};
	
	window.resolveTree(node, 'childs', callback);
	
	console.log(node);

####output:-

{
	name : 'parent',
	childs : []
};	

####In Node.js:-

var tree = require('treewalker');

var myResult={};

var node = {
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : [{
			name : 'ch2',
			childs : []
		}, {
			name : 'ch3',
			childs : []
		}]
	}]
};

	function callback(obj,siblings,index) {
		if (obj.name === "ch2") {
		     	siblings.splice(index,1);
			return true;
	    	}
	};
	
	tree.resolveTree(node, 'childs', callback);

	console.log(node);

####output:-

{
	name : 'parent',
	childs : [{
		name : 'ch1',
		childs : [{
			name : 'ch3',
			childs : []
		}]
	}]
};	
1.1.5

9 years ago

1.1.4

9 years ago

1.1.3

9 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago