// rand.js var FILE = require("lib/file"); function randomize() { return Math.random(); } function getInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(randomize() * (max - min + 1)) + min; } function getSeed() { return getInt(1000000000, 9999999999); } function one(arr) { return arr[getInt(0, arr.length - 1)]; } function makeString(length, characterNames) { var result = ''; var characters = ''; for (var i = 0; i < characterNames.length; i++) { switch (characterNames[i]) { case 'uppercase': characters += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; break; case 'lowercase': characters += 'abcdefghijklmnopqrstuvwxyz'; break; case 'number': characters += '0123456789'; break; case 'base64': characters += 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; break; case 'hex': characters += '0123456789abcdef'; break; default: characters += characterNames[i]; } } var charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(randomize() * charactersLength)); } return result; } // UUID v4 function uuidv4() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = randomize() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } function shuffle(arr) { return arr.sort(function() { return randomize() - 0.5; }); } function rotate(arr, i) { return arr[i % arr.length]; } function sample(arr, length) { return shuffle(arr).slice(0, length); } function discardCallback(callback, args, filename) { if (typeof callback !== "function") return; var discarded = splitLn(FILE.readFile(filename, FILE.CdoCharset.CdoUTF_8)); var chosen = callback.apply(null, args); while (chosen == null || discarded.indexOf(chosen) > -1) { console.log("다른 항목을 찾습니다."); chosen = callback.apply(null, args); } FILE.appendFile(filename, "\r\n" + chosen, FILE.CdoCharset.CdoUTF_8); return chosen; } function discardOne(arr, filename) { var discarded = splitLn(FILE.readFile(filename, FILE.CdoCharset.CdoUTF_8)); var _arr = arr.reduce(function(a, x) { if (discarded.indexOf(x) < 0) a.push(x); return a; }, []); return discardCallback(one, [_arr], filename); } exports.randomize = randomize; exports.getInt = getInt; exports.getSeed = getSeed; exports.one = one; exports.makeString = makeString; exports.uuidv4 = uuidv4; exports.shuffle = shuffle; exports.rotate = rotate; exports.sample = sample; exports.discardOne = discardOne; exports.discardCallback = discardCallback; exports.VERSIONINFO = "Random Module (rand.js) version 0.6.1"; exports.global = global; exports.require = global.require;