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)—_