0.0.2 • Published 8 years ago
@kba/anno-util v0.0.2
anno-util
Utility functions
ensureArray(obj, k)add(obj, k, v)remove(obj, k, v)numberOf(obj, k)filter(needle, match)find(needle, match)splitIdRepliesRev(str)collectIds(listOfAnnotations)
ensureArray(obj, k)
Ensure that obj[k] is an array.
- If
obj[k]is an array, return it. - If
obj[k]is not defined ornull, return an empty array - Otherwise return an array consisting of
[obj[k]]only
add(obj, k, v)
Add or set obj[k] to v
- If
obj[k]is not defined or null, setobj[k]tov. - Otherwise if
obj[k]is an array, pushv. - Otherwise set
obj[k]to an array of the old value andv - If
obj[k]is a single-value array, setobj[k]to this value.
remove(obj, k, v)
Unset a value v in field k of obj.
- If
obj[k]is an array, splicevout of the array - Otherwise if
obj[k]is equal tov, setobj[k]to an empty array. NOTE Do notdeleteobjk to make reactive libs like Angular, Vue or React happy.
numberOf(obj, k)
Get the number of values for field k of obj.
filter(needle, match)
Array.filter
that works on non-array single values.
find(needle, match)
Array.find
that works on non-array single values.
splitIdRepliesRev(str)
Split a slug (last URI segment) into annotation ID, reply ID and revision ID.
collectIds(listOfAnnotations)
Get a list of IDs of all annotations in a tree.
collectIds([{id: 123}, {id: 'xyz', hasReply: [{id: 'foo'}]}])
// [123, 'xyz', 'foo']