Last active
February 17, 2019 00:47
-
-
Save DanOswalt/640727408d21acc9260a4c3124277e04 to your computer and use it in GitHub Desktop.
Pronounceable Random String function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// returns a random string that is english-ish. | |
// if no params passed, will return a lowercase string between 3 and 8 letters. | |
// 1st arg option to pass in boolean for caplitalizing first letter for proper names (default false) | |
// 2nd arg option to pass in min chars (default 3) | |
// 3rd arg option to pass in max chars (default 8) | |
function pronounceableRandomString(cap, min, max) { | |
function randBetween(min, max) { | |
return Math.floor(Math.random()*(max-min+1)+min); | |
} | |
var minChars = min || 3; | |
var maxChars = max || 8; | |
var capitalize = cap == false ? false : true; | |
if (typeof capitalize !== "boolean" || typeof minChars !== "number" || typeof maxChars !== "number") { | |
return "Err: Bad Args"; | |
} | |
if (minChars > maxChars) return "Err: Num Chars"; | |
var chars = randBetween(minChars,maxChars); | |
var pattern = randBetween(0,2); | |
var str = ""; | |
var vowelChunk = [ | |
'a','a','a','a','a','a','a','a','a','a', | |
'e','e','e','e','e','e','e','e','e','e', | |
'o','o','o','o','o','o','o','o','o','o', | |
'i','i','i','i','i','u','u','u','u','u', | |
'ae','ai','au','aa','ea','ee','ei','eu','ia','ie', | |
'io','ua','ue','ui','uo','eau','oa','oi','ou','ea' | |
]; | |
var firstConsonentChunk = [ | |
'b','c','d','f','g','h','j','k','l','m', | |
'n','n','p','q','r','s','t','u','v','x', | |
'y','z','ch','sh','ph','th','st','str','sk','sp', | |
'kr','cl','qu','fr','bl','pl','tr','tw','dr','br', | |
'gh','gr','gl','pr','zh','fl','cl','cr','chr','spr', | |
'r','s','t','l','n','r','s','t','l','n' | |
]; | |
var consonentChunk = [ | |
'b','c','d','f','g','h','j','k','l','m', | |
'n','n','p','q','r','s','t','u','v','x', | |
'y','z','ch','sh','ph','th','st','str','sk','sp', | |
'ss','tt','qu','mm','nn','gg','tr','rt','lt','ft', | |
'gh','rg','dd','rp','ll','ck','rf','cr','chr','spr', | |
'r','s','t','l','n','r','s','t','l','n' | |
]; | |
if(pattern < 2 ) { | |
str = firstConsonentChunk[randBetween(0,firstConsonentChunk.length - 1)] + | |
vowelChunk[randBetween(0,vowelChunk.length - 1)] + | |
consonentChunk[randBetween(0,consonentChunk.length - 1)] + | |
vowelChunk[randBetween(0,vowelChunk.length - 1)] + | |
consonentChunk[randBetween(0,consonentChunk.length - 1)]; | |
} else { | |
str = vowelChunk[randBetween(0,vowelChunk.length - 1)] + | |
consonentChunk[randBetween(0,consonentChunk.length - 1)] + | |
vowelChunk[randBetween(0,vowelChunk.length - 1)] + | |
consonentChunk[randBetween(0,consonentChunk.length - 1)] + | |
vowelChunk[randBetween(0,vowelChunk.length - 1)]; | |
} | |
if (capitalize) { | |
str = str.charAt(0).toUpperCase() + str.slice(1); | |
} | |
str = str.substr(0,chars); | |
return str; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment