fictional
Version:
Generate fake data deterministically from a given input
41 lines (34 loc) • 940 B
JavaScript
var hash = require('./hash')
var fit = require('./utils/fit')
var resolve = require('./utils/resolve')
function someOf(a, b, c) {
return b != null && c != null ? someOfMain(a, b, c) : someOfCurried(a, b)
}
function someOfMain(input, range, samples) {
var ids = hash.sequence2(input, 'someOf')
var n =
typeof range === 'number'
? range
: fit(ids.next().value, range[0], range[1])
var i = -1
var results = []
var remaining = samples.slice()
var remainingLen
var chosenIndex
var chosen
var id
while (++i < n && (remainingLen = remaining.length)) {
id = ids.next().value
chosenIndex = id % remainingLen
chosen = remaining[chosenIndex]
remaining.splice(chosenIndex, 1)
results.push(resolve(id, chosen))
}
return results
}
function someOfCurried(range, samples) {
return function someOfCurriedFn(input) {
return someOf(input, range, samples)
}
}
module.exports = someOf