UNPKG

fictional

Version:

Generate fake data deterministically from a given input

79 lines (64 loc) 1.86 kB
var hash = require('./hash') var fitRanges = require('./utils/fitRanges') var fromCodePoint = require('./utils/fromCodePoint') var VALUES_THRESHOLD = 256 var ascii = charInRanges([[0x20, 0x7e]]) var latin1 = charInRanges([ [0x20, 0x7e], [0xa0, 0xff] ]) var digit = charInRanges([[0x30, 0x39]]) var asciiLower = charInRanges([[0x61, 0x7a]]) var asciiUpper = charInRanges([[0x41, 0x5a]]) var latin1Lower = charInRanges([ [0xc0, 0xd6], [0xd8, 0xde] ]) var latin1Upper = charInRanges([ [0xdf, 0xf6], [0xf8, 0xff] ]) var char = charInRanges([asciiLower, asciiUpper, digit]) char.inRanges = charInRanges char.alphanumeric = charInRanges([char]) char.ascii = ascii char.latin1 = latin1 char.unicode = charInRanges([ascii, latin1]) char.digit = digit char.lower = char.asciiLower = asciiLower char.upper = char.asciiUpper = asciiUpper char.latin1Lower = latin1Lower char.latin1Upper = latin1Upper char.letter = char.asciiLetter = charInRanges([asciiLower, asciiUpper]) char.latin1Letter = charInRanges([latin1Lower, latin1Upper]) char.alphanumeric = charInRanges([asciiLower, asciiUpper, digit]) char.unicodeLower = charInRanges([asciiLower, latin1Lower]) char.unicodeUpper = charInRanges([asciiUpper, latin1Upper]) function charInRanges(ranges) { ranges = normalizeRanges(ranges) var fitFn = fitRanges(ranges, VALUES_THRESHOLD) charFn.__fictional_char = { ranges: ranges } return charFn function charFn(input) { return fromCodePoint(fitFn(hash(input))) } } function normalizeRanges(ranges) { ranges = [].concat(ranges) var results = [] var i = -1 var n = ranges.length var range while (++i < n) { range = ranges[i] if (range.__fictional_char) { results.push.apply(results, range.__fictional_char.ranges) } else { results.push(range) } } return results } module.exports = char