hashTree _Source: [hashtree.js](../hashtree.js)_ - [hashTree.get](#hashtreegetobj-keys) - [hashTree.set](#hashtreesetobj-keys-value) - [hashTree.delete](#hashtreedeleteobj-keys) - [hashTree.use](#hashtreeuseobj-keys-value) - [hashTree.setAll](#hashtreesetallobj-keys-value) - [hashTree.sort](#hashtreesortobj-sorter) - [hashTree.diffToBase](#hashtreedifftobasebase-obj) - [hashTree.diff](#hashtreediffobj1-obj2-keys-diff1-diff2) - [exports.hashTree](#exportshashtree) - [HashTree.prototype.get](#hashtreeprototypegetkeys) - [HashTree.prototype.set](#hashtreeprototypesetkeys-value) - [HashTree.prototype.delete](#hashtreeprototypedeletekeys) - [HashTree.prototype.tree](#hashtreeprototypetree) - [HashTree.prototype.use](#hashtreeprototypeusekeys-value) - [HashTree.prototype.setAll](#hashtreeprototypesetallkeys-value) - [HashTree.prototype.sort](#hashtreeprototypesortsorter) - [exports.HashTree](#exportshashtree) - [Ops](#opsref-key) - [Ops.prototype.keys](#opsprototypekeys) - [Ops.prototype.inc](#opsprototypeinc) - [Ops.prototype.dec](#opsprototypedec) - [Ops.prototype.add](#opsprototypeaddval) - [Ops.prototype.sub](#opsprototypesubval) - [Ops.prototype.mul](#opsprototypemulval) - [Ops.prototype.div](#opsprototypedivval) - [Ops.prototype.mod](#opsprototypemodval) - [Ops.prototype.or](#opsprototypeorval) - [Ops.prototype.and](#opsprototypeandval) - [Ops.prototype.not](#opsprototypenotval) # hashTree.get(obj, keys) > Gets a value in the hash tree `obj` according to `keys`. **Example:** ```js obj = { one: { a: 1 } }; hashTree.get(obj, 'one.a'); // => 1 ``` **Parameters:** - `{Object} obj` : Object to append `value` to lead defined by `keys` - `{String | Array} keys` : dot separated string or Array to gather `value` from hashtree object `obj` **Return:** `{Any}` value found using keys Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.set(obj, keys, value) > Sets a value in the hash tree `obj` according to `keys`. **Example:** ```js obj = { one: { a: 1 } }; hashTree.set(obj, ['two', 'b', '2'], 2); // OR hashTree.set(obj, 'two.b.2', 2); // => true; obj = { one: { a: 1 }, two: { b: { '2': 2 } } } ``` **Parameters:** - `{Object} obj` : Object to append `value` to lead defined by `keys` - `{String | Array} keys` : dot separated string or Array to append value to hashtree object `obj` - `{Any} value` : The value to set **Return:** `{Boolean}` true if value was set, otherwise false Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.delete(obj, keys) > Deletes a branch of the hash tree on `obj`. **Example:** ```js obj = { one: { a: [1, 2, 3], b: 2, c: 3 } }; hashTree.delete(obj, 'one.a'); // => true; obj = { one: { b: 2, c: 3 } } ``` **Parameters:** - `{Object} obj` : Object to append `value` to lead defined by `keys` - `{String | Array} keys` : dot separated string or Array to append value to hashtree object `obj` **Return:** `{Boolean}` `true` if branch could be deleted; otherwise `false` Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.use(obj, keys, value) > Make operations on a value in the hash tree `obj` according to `keys`. **Example:** ```js obj = { one: { a: 1 } }; hashTree.use(obj, 'one.a').add(5).get(); // => 6 ``` **Parameters:** - `{Object} obj` : Object to append `value` to lead defined by `keys` - `{String | Array} keys` : dot separated string or Array to gather `value` from hashtree object `obj` - `{Number | Boolean} value` : (optional) set value first **Return:** `{Ops}` object for operations **See:** - [Ops](#opsref-key) Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.setAll(obj, keys, value) > Sets all leafes of the hash tree on `obj` to `value`. **Example:** ```js obj = { one: { a: 1, b: 2, c: 3 } }; hashTree.setAll(obj, 'one', 0); // => true; obj = { one: { a: 0, b: 0, c: 0 } } ``` **Parameters:** - `{Object} obj` : Object to append `value` to lead defined by `keys` - `{String | Array} keys` : dot separated string or Array to append value to hashtree object `obj` - `{Any} value` : The value to add Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.sort(obj, sorter) > Sorts a hash tree with an optional `sorter` function. Sorting a hash tree does not make a lot of sense. It does not change anything. But for human eyes, e.g. on exporting to YAML or JSON, sorted patterns are easier to read (at least for me). **Example:** ```js obj = { z: { y: 25, x: 24 }, a: { c: 2, b: 1 } } hashTree.sort(obj); // => { a: { b: 1, c: 2 }, z: { x: 24, y: 25 } } ``` **Parameters:** - `{Object} obj` : Object to sort - `{Function} sorter` : sorting function with arguments (a, b) **Return:** `{Object}` sorted obj Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.diffToBase(base, obj) > Compare `obj` with `base` and return the difference between `base` and `obj`. Properties which are only in `base` will not be considered. **Example:** ```js base = { one: { a: 1, c: 3 } }; obj = { one: { a: 1, b: 2 } }; hashTree.diffToBase(base, obj); // => { one: { b: 2 } } ``` **Parameters:** - `{Object} base` - `{Object} obj` **Return:** `{Object}` difference between base and obj Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # hashTree.diff(obj1, obj2, keys, diff1, diff2) > Obtain the difference from two hashtrees **Example:** ```js base = { one: { a: 1, c: 3 }, two: 2 }; obj = { one: { a: 1, b: 2 } }; hashTree.diff(base, obj); // => { diff1: { one: { c: 3 }, two: 2 }, diff2: { one: { b: 2 } } } ``` **Parameters:** - `{Object} obj1` : first Object to compare - `{Object} obj2` : second Object to compare - `{Array} keys` : (private) - `{Object} diff1` : (private) Difference of `obj1` to `obj2` - `{Object} diff2` : (private) Difference of `obj2` to `obj1` **Return:** `{Object}` {diff1: {Object}, diff2: {Object}} Go: [TOC](#tableofcontents) | [hashTree](#toc_hashtree) # exports.hashTree() > @exports hashTree Go: [TOC](#tableofcontents) | [exports](#toc_exports) # HashTree.prototype.get(keys) > Get value from HashTree using keys **Parameters:** - `{String | Array} keys` : dot separated string or Array to gather `value` from hashtree object `obj` **Return:** `{Any}` value : found using keys **See:** - [hashTree.get](#hashtreegetobj-keys)() Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.set(keys, value) > Set value on HashTree using keys **Parameters:** - `{String | Array} keys` : dot separated string or Array to gather `value` from hashtree object `obj` - `{Any} value` : The value to add **Return:** `{Boolean}` true if value was set, otherwise false **See:** - [hashTree.set](#hashtreesetobj-keys-value)() Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.delete(keys) > Deletes a HashTree **Parameters:** - `{String | Array} keys` dot separated string or Array to append value to hashtree object `obj` **Return:** `{Boolean}` `true` if branch could be deleted; otherwise `false` **See:** - [hashTree.delete](#hashtreedeleteobj-keys)() Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.tree() > Obtain the HashTree Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.use(keys, value) > Set value on HashTree using keys **Parameters:** - `{String | Array} keys` : dot separated string or Array to gather `value` from hashtree object `obj` - `{Number | Boolean} value` : (optional) set value first **Return:** `{Object}` internal object **See:** - [hashTree.use](#hashtreeuseobj-keys-value)() Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.setAll(keys, value) > Sets all leafes of the hash tree on `obj` to `value`. **Example:** ```js obj = { one: { a: 1, b: 2, c: 3 } }; ahashTree = new HashTree(obj); ahashTree.setAll('one', 0); ahashTree.tree(); // => { one: { a: 0, b: 0, c: 0 } } ``` **Parameters:** - `{String | Array} keys` : dot separated string or Array to append value to hashtree object `obj` - `{Any} value` : The value to add Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # HashTree.prototype.sort(sorter) > Sort the HashTree using optional `sorter` function **Parameters:** - `{Function} sorter` : sorting function with arguments (a, b) **See:** - [hashTree.sort](#hashtreesortobj-sorter)() Go: [TOC](#tableofcontents) | [HashTree.prototype](#toc_hashtreeprototype) # exports.HashTree() > @exports HashTree Go: [TOC](#tableofcontents) | [exports](#toc_exports) # Ops(ref, key) > Helper class for [hashTree.use](#hashtreeuseobj-keys-value) **Parameters:** - `{Object} ref` : reference in object - `{String} key` : key for value to change Go: [TOC](#tableofcontents) # Ops.prototype.keys() > return keys of a hash tree branch **Return:** `{Array}` array of keys Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.inc() > increment Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.dec() > decrement Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.add(val) > add `val` **Parameters:** - `{Number} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.sub(val) > subtract `val` **Parameters:** - `{Number} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.mul(val) > multiply by `val` **Parameters:** - `{Number} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.div(val) > divide by `val` **Parameters:** - `{Number} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.mod(val) > modulo by `val` **Parameters:** - `{Number} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.or(val) > logical-or by `val` **Parameters:** - `{Number | Boolean} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.and(val) > logical-and by `val` **Parameters:** - `{Number | Boolean} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) # Ops.prototype.not(val) > logical-not by `val` if `val` is Boolean logical-bitwise-not by `val` if `val` is Number **Parameters:** - `{Number | Boolean} val` Go: [TOC](#tableofcontents) | [Ops.prototype](#toc_opsprototype) _—generated by [apidox](https://github.com/codeactual/apidox)—_