Commit 8d6a1755 authored by Tristan Cavelier's avatar Tristan Cavelier

getLeavesOnTree and getActiveLeaf replaced by getLeavesFromDocumentTree

parent fb26b7e0
...@@ -440,53 +440,31 @@ var utilities = { ...@@ -440,53 +440,31 @@ var utilities = {
return result.rev; return result.rev;
}, },
getActiveLeaves : function (docTreeNode) {
var activeLeaves = utilities.getLeavesOnTree( docTreeNode );
activeLeaves = typeof activeLeaves === "string" ?
[activeLeaves] : activeLeaves;
return activeLeaves;
},
/** /**
* @method getLeavesOnTree - finds all leaves on a tree * Gets an array of leaves revisions from document tree
* @param {docTree} string - the tree for this document * @method getLeavesFromDocumentTree
* @returns {leaves} object - array with all leaves * @param {object} document_tree The document tree
* @info - find active (status = available ) leaves * @return {array} The array of leaves revisions
*/ */
getLeavesOnTree : function ( docTreeNode ){ getLeavesFromDocumentTree : function (document_tree) {
var revisions = [], var i, result, search;
type = docTreeNode['type'], result = [];
status = docTreeNode['status'], // search method fills [result] with the winner revision
kids = docTreeNode['kids'], search = function (document_tree) {
rev = docTreeNode['rev'], var i;
addLeaf, addLeaves, numberOfKids, i, key; if (document_tree.children.length === 0) {
// This node is a leaf
for ( key in docTreeNode ){ result.push(document_tree.rev);
if ( key === "type" ){ return;
// node is a leaf, then it will have no kids!
if ( type === 'leaf' && status !== 'deleted' ){
addLeaf = docTreeNode['rev'];
}
// node has kid(s), must be a branch
if ( utilities.isObjectEmpty( kids ) === false ){
numberOfKids = utilities.isObjectSize( kids );
for ( i = 0; i < numberOfKids; i+=1 ){
// recurse
addLeaves = utilities.getLeavesOnTree( kids[i] );
// single kid returns string 1-1234... = unshift
// multiple kids array [1-1234...,3-3412...] = concat
revisions = addLeaves === 'string' ?
revisions.unshift[ addLeaves ] :
revisions.concat( addLeaves );
}
}
} }
// This node has children
for (i = 0; i < document_tree.children.length; i += 1) {
// searching deeper to find the deeper leaf
search(document_tree.children[i]);
} }
// for recursiveness: };
// no kids = passback string, multiple kids, pass back array search(document_tree);
return ( addLeaf === undefined ? revisions : addLeaf ); return result;
}, },
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment