Home Identifier Source Repository

src/helpers/find-results.js

import flatten from 'lodash/array/flatten'
import isArray from 'lodash/lang/isArray'
import isBoolean from 'lodash/lang/isBoolean'
import isObject from 'lodash/lang/isObject'
import isUndefined from 'lodash/lang/isUndefined'
import map from 'lodash/collection/map'
import reject from 'lodash/collection/reject'

function checkIfShouldDescend(val, key, coll) {
	if (key === 'result' && !coll.hasOwnProperty('details')) {
		return val
	}
	else if (key !== 'matches') {
		return findResults(val)
	}
}

function findResults(obj) {
	if (isArray(obj)) {
		return reject(flatten(map(obj, findResults)), isUndefined)
	}
	else if (isObject(obj)) {
		return reject(flatten(map(obj, checkIfShouldDescend)), isUndefined)
	}
	else if (isBoolean(obj)) {
		return obj // not an obj, don't process me
	}
}

export default findResults