Skip to content

Commit

Permalink
feat: Consistent approach to hashing across makers
Browse files Browse the repository at this point in the history
  • Loading branch information
justinvdm committed May 8, 2020
1 parent e3ad280 commit 340a0db
Show file tree
Hide file tree
Showing 18 changed files with 986 additions and 994 deletions.
2 changes: 1 addition & 1 deletion bool.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var hash = require('./hash')

module.exports = function bool(input) {
return !!(hash(input) % 2)
return !!(hash([input, 'bool']) % 2)
}
4 changes: 2 additions & 2 deletions char.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ function char(input, opts) {
opts = opts || 0
var ranges = defaults(opts.ranges, DEFAULT_RANGES)

var id = hash([input, 'char', 0])
var id = hash([input, 'char'])
var range = ranges[id % ranges.length]

id = hash([id, 'char', 1])
id = hash(id)
return fromCodePoint(fit(id, range[0], range[1]))
}

Expand Down
6 changes: 3 additions & 3 deletions float.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ var fit = require('./utils/fit')

function float(input, opts) {
opts = opts || 0

var min = opts.min
var max = opts.max

var whole = hash([input, 'float', 0])
var v = +(whole + '.' + hash([whole, 'float', 1]))
var whole = hash([input, 'float'])
var v = +(whole + '.' + hash(whole))

return fit(v, min, max)
}
Expand Down
2 changes: 1 addition & 1 deletion int.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function int(input, opts) {
opts = opts || 0
var min = opts.min
var max = opts.max
var id = hash(input)
var id = hash([input, 'int'])
return fit(id, min, max)
}

Expand Down
8 changes: 4 additions & 4 deletions join.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ function join(a, b, c) {
return b != null && c == null ? joinCurried(a, b) : joinMain(a, b, c)
}

function joinMain(id, joiner, makerFns) {
var result = flatten(tuple(id, makerFns))
function joinMain(input, joiner, makerFns) {
var result = flatten(tuple(input, makerFns))
return typeof joiner === 'function' ? joiner(result) : result.join(joiner)
}

function joinCurried(joiner, makerFns) {
return function joinFn(id) {
return joinMain(id, joiner, makerFns)
return function joinFn(input) {
return joinMain(input, joiner, makerFns)
}
}

Expand Down
2 changes: 1 addition & 1 deletion oneOf.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function oneOf(a, b) {
}

function oneOfMain(input, samples) {
var id = hash(input)
var id = hash([input, 'oneOf'])
return resolve(id, samples[id % samples.length])
}

Expand Down
4 changes: 2 additions & 2 deletions oneOfWeighted.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ function oneOfWeighted(a, b) {

function oneOfWeightedMain(input, samples) {
samples = parseSamples(samples)
var id = hash(input)
var i = -1
var id = hash([input, 'oneOfWeighted'])
var n = samples.length
var pRemaining = 1
var i = -1
var sample
var p

Expand Down
6 changes: 3 additions & 3 deletions paragraph.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ function paragraph(input, opts) {
var minSentences = defaults(opts.minSentences, DEFAULT_MIN_SENTENCES)
var maxSentences = defaults(opts.maxSentences, DEFAULT_MAX_SENTENCES)

var id = hash(input)
var id = hash([input, 'paragraph'])
var n = fit(id, minSentences, maxSentences)
var i = 0
id = hash([id, 'paragraph', i])

id = hash(id)
var result = sentence(id, opts)

while (++i < n) {
id = hash([id, 'paragraph', i])
id = hash(id)
result += ' ' + sentence(id, opts)
}

Expand Down
6 changes: 3 additions & 3 deletions sentence.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ function sentence(input, opts) {
var maxClauses = defaults(opts.maxClauses, DEFAULT_MAX_CLAUSES)
var unicode = defaults(opts.unicode, DEFAULT_UNICODE)

var id = hash(input)
var id = hash([input, 'sentence'])
var n = fit(id, minClauses, maxClauses)
var i = 0
id = hash([id, 'sentence', i])
id = hash(id)

var firstOpts = conj(opts, {
capitalize: 'first',
Expand All @@ -35,7 +35,7 @@ function sentence(input, opts) {
var result = words(id, firstOpts)

while (++i < n) {
id = hash([id, 'sentence', i])
id = hash(id)
result += ', ' + words(id, restOpts)
}

Expand Down
4 changes: 2 additions & 2 deletions shape.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ function shape(a, b) {
}

function shapeMain(input, properties) {
var id = hash(input)
var id = hash([input, 'shape'])
var results = {}

for (var k in properties) {
if (hasOwnProperty.call(properties, k)) {
results[k] = resolve(hash([id, 'shape', k]), properties[k])
results[k] = resolve(hash([id, k]), properties[k])
}
}

Expand Down
4 changes: 2 additions & 2 deletions someOf.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ function someOf(a, b, c) {
}

function someOfMain(input, range, samples) {
var id = hash(input)
var id = hash([input, 'someOf'])
var n = typeof range === 'number' ? range : fit(id, range[0], range[1])
var i = -1
var results = []
Expand All @@ -17,7 +17,7 @@ function someOfMain(input, range, samples) {
var chosen

while (++i < n && (remainingLen = remaining.length)) {
id = hash([id, 'someOf', i])
id = hash(id)
chosenIndex = id % remainingLen
chosen = remaining[chosenIndex]
remaining.splice(chosenIndex, 1)
Expand Down

0 comments on commit 340a0db

Please sign in to comment.