0.0.3 • Published 10 years ago
property-tree-merge v0.0.3
property-tree-merge
This package contains a way to merge a tree of normal objects, with a tree of property objects. The result is a tree of property objects. When the new merged tree is created, each changed property object will notify to its listener that changes have occured.
The API contains pre-defined default functions for getting a list of children per node, for merging nodes, etc, but they can all be customized.
API
var propertyTreeMerge = require( 'property-tree-merge' );
dest propertyTreeMerge( dest, src, opts = { } );The propertyTreeMerge function takes a property tree as dest (which will be in-place modified) and a normal object tree src. The dest can be null, in which case a new property tree is returned.
The opts is an optional object defining options to the merge:
sorter: ( a, b ) => a - b // Comparison function for sort()
identifyer: obj => obj.id // Function which returns a unique ID for the
// node (must be unique per shared parent-
// node, not necessary in the entire tree)
changed: ( a, b ) => ... // Function which checks if a and b have
// diverged and therefore needs to be merged
childRefs: obj => obj.children // Function returning the children array per
// node
merge: ( dest, src ) => ... // Merge node src into dest, but not the
// children. property-tree-merge handles the
// childrenUsage
Create a new property tree from a normal object tree:
var newPropertyTree = propertyTreeMerge( null, tree );Merge trees
/*var propertyTree = */ propertyTreeMerge( propertyTree, tree );
// The return value is the same as propertyTree, since merging is in-place.