X-Git-Url: https://pwan.org/git/?p=tech-radar.git;a=blobdiff_plain;f=examples%2Fchance.js;h=e8af4c456dd9aa2039d90426786496cf969a1713;hp=068bc744489a002a9624ca916242401f9a84d177;hb=7dfc90c0d65cf2e95b4001e15e72dcc99b2a0701;hpb=b5fec289ad389a08030e077b9e54506efd2f9e66 diff --git a/examples/chance.js b/examples/chance.js index 068bc74..e8af4c4 100644 --- a/examples/chance.js +++ b/examples/chance.js @@ -1,4 +1,4 @@ -// Chance.js 0.6.1 +// Chance.js 0.5.5 // http://chancejs.com // (c) 2013 Victor Quinn // Chance may be freely distributed or modified under the MIT license. @@ -13,11 +13,8 @@ var CHARS_UPPER = CHARS_LOWER.toUpperCase(); var HEX_POOL = NUMBERS + "abcdef"; - // Cached array helpers - var slice = Array.prototype.slice; - // Constructor - function Chance (seed) { + var Chance = function (seed) { if (!(this instanceof Chance)) { return new Chance(seed); } @@ -38,24 +35,19 @@ return this.mt.random(this.seed); }; } - - return this; - } - - Chance.prototype.VERSION = "0.6.1"; + }; // Random helper functions function initOptions(options, defaults) { options || (options = {}); - - if (defaults) { - for (var i in defaults) { - if (typeof options[i] === 'undefined') { - options[i] = defaults[i]; - } + if (!defaults) { + return options; + } + for (var i in defaults) { + if (typeof options[i] === 'undefined') { + options[i] = defaults[i]; } } - return options; } @@ -120,7 +112,7 @@ // the trailing zeroes are dropped. Left to the consumer if trailing zeroes are // needed Chance.prototype.floating = function (options) { - var num; + var num, range; options = initOptions(options, {fixed : 4}); var fixed = Math.pow(10, options.fixed); @@ -175,14 +167,40 @@ return this.integer(options); }; + Chance.prototype.normal = function (options) { + options = initOptions(options, {mean : 0, dev : 1}); + + // The Marsaglia Polar method + var s, u, v, norm, + mean = options.mean, + dev = options.dev; + + do { + // U and V are from the uniform distribution on (-1, 1) + u = this.random() * 2 - 1; + v = this.random() * 2 - 1; + + s = u * u + v * v; + } while (s >= 1); + + // Compute the standard normal variate + norm = u * Math.sqrt(-2 * Math.log(s) / s); + + // Shape and scale + return dev * norm + mean; + }; + Chance.prototype.string = function (options) { options = initOptions(options); var length = options.length || this.natural({min: 5, max: 20}), - pool = options.pool, - text = this.n(this.character, length, {pool: pool}); + text = '', + pool = options.pool; - return text.join(""); + for (var i = 0; i < length; i++) { + text += this.character({pool: pool}); + } + return text; }; // -- End Basics -- @@ -194,57 +212,13 @@ }; Chance.prototype.mixin = function (obj) { + var chance = this; for (var func_name in obj) { Chance.prototype[func_name] = obj[func_name]; } return this; }; - // Given a function that generates something random and a number of items to generate, - // return an array of items where none repeat. - Chance.prototype.unique = function(fn, num, options) { - options = initOptions(options, { - // Default comparator to check that val is not already in arr. - // Should return `false` if item not in array, `true` otherwise - comparator: function(arr, val) { - return arr.indexOf(val) !== -1; - } - }); - - var arr = [], count = 0, result, MAX_DUPLICATES = num * 50, params = slice.call(arguments, 2); - - while (arr.length < num) { - result = fn.apply(this, params); - if (!options.comparator(arr, result)) { - arr.push(result); - // reset count when unique found - count = 0; - } - - if (++count > MAX_DUPLICATES) { - throw new RangeError("Chance: num is likely too large for sample set"); - } - } - return arr; - }; - - /** - * Gives an array of n random terms - * @param fn the function that generates something random - * @param n number of terms to generate - * @param options options for the function fn. - * There can be more parameters after these. All additional parameters are provided to the given function - */ - Chance.prototype.n = function(fn, n, options) { - var i = n || 1, arr = [], params = slice.call(arguments, 2); - - for (null; i--; null) { - arr.push(fn.apply(this, params)); - } - - return arr; - }; - // H/T to SO for this one: http://vq.io/OtUrZ5 Chance.prototype.pad = function (number, width, pad) { // Default pad to 0 if none provided @@ -280,48 +254,6 @@ return new_array; }; - // Returns a single item from an array with relative weighting of odds - Chance.prototype.weighted = function(arr, weights) { - if (arr.length !== weights.length) { - throw new RangeError("Chance: length of array and weights must match"); - } - - // If any of the weights are less than 1, we want to scale them up to whole - // numbers for the rest of this logic to work - if (weights.some(function(weight) { return weight < 1; })) { - var min = weights.reduce(function(min, weight) { - return (weight < min) ? weight : min; - }, weights[0]); - - var scaling_factor = 1 / min; - - weights = weights.map(function(weight) { - return weight * scaling_factor; - }); - } - - var sum = weights.reduce(function(total, weight) { - return total + weight; - }, 0); - - // get an index - var selected = this.natural({ min: 1, max: sum }); - - var total = 0; - var chosen; - // Using some() here so we can bail as soon as we get our match - weights.some(function(weight, index) { - if (selected <= total + weight) { - chosen = arr[index]; - return true; - } - total += weight; - return false; - }); - - return chosen; - }; - // -- End Helpers -- // -- Text -- @@ -330,7 +262,11 @@ options = initOptions(options); var sentences = options.sentences || this.natural({min: 3, max: 7}), - sentence_array = this.n(this.sentence, sentences); + sentence_array = []; + + for (var i = 0; i < sentences; i++) { + sentence_array.push(this.sentence()); + } return sentence_array.join(' '); }; @@ -341,7 +277,11 @@ options = initOptions(options); var words = options.words || this.natural({min: 12, max: 18}), - text, word_array = this.n(this.word, words); + text, word_array = []; + + for (var i = 0; i < words; i++) { + word_array.push(this.word()); + } text = word_array.join(' '); @@ -413,30 +353,27 @@ Chance.prototype.age = function (options) { options = initOptions(options); - var ageRange; + var age; switch (options.type) { - case 'child': - ageRange = {min: 1, max: 12}; - break; - case 'teen': - ageRange = {min: 13, max: 19}; - break; - case 'adult': - ageRange = {min: 18, max: 65}; - break; - case 'senior': - ageRange = {min: 65, max: 100}; - break; - case 'all': - ageRange = {min: 1, max: 100}; - break; - default: - ageRange = {min: 18, max: 65}; - break; + case 'child': + age = this.natural({min: 1, max: 12}); + break; + case 'teen': + age = this.natural({min: 13, max: 19}); + break; + case 'adult': + age = this.natural({min: 18, max: 120}); + break; + case 'senior': + age = this.natural({min: 65, max: 120}); + break; + default: + age = this.natural({min: 1, max: 120}); + break; } - return this.natural(ageRange); + return age; }; Chance.prototype.birthday = function (options) { @@ -447,33 +384,24 @@ return this.date(options); }; - // CPF; ID to identify taxpayers in Brazil - Chance.prototype.cpf = function () { - var n = this.n(this.natural, 9, { max: 9 }); - var d1 = n[8]*2+n[7]*3+n[6]*4+n[5]*5+n[4]*6+n[3]*7+n[2]*8+n[1]*9+n[0]*10; - d1 = 11 - (d1 % 11); - if (d1>=10) { - d1 = 0; - } - var d2 = d1*2+n[8]*3+n[7]*4+n[6]*5+n[5]*6+n[4]*7+n[3]*8+n[2]*9+n[1]*10+n[0]*11; - d2 = 11 - (d2 % 11); - if (d2>=10) { - d2 = 0; - } - return ''+n[0]+n[1]+n[2]+'.'+n[3]+n[4]+n[5]+'.'+n[6]+n[7]+n[8]+'-'+d1+d2; + var firstNames = { + "male": ["James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Charles", "Thomas", "Christopher", "Daniel", "Matthew", "George", "Donald", "Anthony", "Paul", "Mark", "Edward", "Steven", "Kenneth", "Andrew", "Brian", "Joshua", "Kevin", "Ronald", "Timothy", "Jason", "Jeffrey", "Frank", "Gary", "Ryan", "Nicholas", "Eric", "Stephen", "Jacob", "Larry", "Jonathan", "Scott", "Raymond", "Justin", "Brandon", "Gregory", "Samuel", "Benjamin", "Patrick", "Jack", "Henry", "Walter", "Dennis", "Jerry", "Alexander", "Peter", "Tyler", "Douglas", "Harold", "Aaron", "Jose", "Adam", "Arthur", "Zachary", "Carl", "Nathan", "Albert", "Kyle", "Lawrence", "Joe", "Willie", "Gerald", "Roger", "Keith", "Jeremy", "Terry", "Harry", "Ralph", "Sean", "Jesse", "Roy", "Louis", "Billy", "Austin", "Bruce", "Eugene", "Christian", "Bryan", "Wayne", "Russell", "Howard", "Fred", "Ethan", "Jordan", "Philip", "Alan", "Juan", "Randy", "Vincent", "Bobby", "Dylan", "Johnny", "Phillip", "Victor", "Clarence", "Ernest", "Martin", "Craig", "Stanley", "Shawn", "Travis", "Bradley", "Leonard", "Earl", "Gabriel", "Jimmy", "Francis", "Todd", "Noah", "Danny", "Dale", "Cody", "Carlos", "Allen", "Frederick", "Logan", "Curtis", "Alex", "Joel", "Luis", "Norman", "Marvin", "Glenn", "Tony", "Nathaniel", "Rodney", "Melvin", "Alfred", "Steve", "Cameron", "Chad", "Edwin", "Caleb", "Evan", "Antonio", "Lee", "Herbert", "Jeffery", "Isaac", "Derek", "Ricky", "Marcus", "Theodore", "Elijah", "Luke", "Jesus", "Eddie", "Troy", "Mike", "Dustin", "Ray", "Adrian", "Bernard", "Leroy", "Angel", "Randall", "Wesley", "Ian", "Jared", "Mason", "Hunter", "Calvin", "Oscar", "Clifford", "Jay", "Shane", "Ronnie", "Barry", "Lucas", "Corey", "Manuel", "Leo", "Tommy", "Warren", "Jackson", "Isaiah", "Connor", "Don", "Dean", "Jon", "Julian", "Miguel", "Bill", "Lloyd", "Charlie", "Mitchell", "Leon", "Jerome", "Darrell", "Jeremiah", "Alvin", "Brett", "Seth", "Floyd", "Jim", "Blake", "Micheal", "Gordon", "Trevor", "Lewis", "Erik", "Edgar", "Vernon", "Devin", "Gavin", "Jayden", "Chris", "Clyde", "Tom", "Derrick", "Mario", "Brent", "Marc", "Herman", "Chase", "Dominic", "Ricardo", "Franklin", "Maurice", "Max", "Aiden", "Owen", "Lester", "Gilbert", "Elmer", "Gene", "Francisco", "Glen", "Cory", "Garrett", "Clayton", "Sam", "Jorge", "Chester", "Alejandro", "Jeff", "Harvey", "Milton", "Cole", "Ivan", "Andre", "Duane", "Landon"], + "female": ["Mary", "Emma", "Elizabeth", "Minnie", "Margaret", "Ida", "Alice", "Bertha", "Sarah", "Annie", "Clara", "Ella", "Florence", "Cora", "Martha", "Laura", "Nellie", "Grace", "Carrie", "Maude", "Mabel", "Bessie", "Jennie", "Gertrude", "Julia", "Hattie", "Edith", "Mattie", "Rose", "Catherine", "Lillian", "Ada", "Lillie", "Helen", "Jessie", "Louise", "Ethel", "Lula", "Myrtle", "Eva", "Frances", "Lena", "Lucy", "Edna", "Maggie", "Pearl", "Daisy", "Fannie", "Josephine", "Dora", "Rosa", "Katherine", "Agnes", "Marie", "Nora", "May", "Mamie", "Blanche", "Stella", "Ellen", "Nancy", "Effie", "Sallie", "Nettie", "Della", "Lizzie", "Flora", "Susie", "Maud", "Mae", "Etta", "Harriet", "Sadie", "Caroline", "Katie", "Lydia", "Elsie", "Kate", "Susan", "Mollie", "Alma", "Addie", "Georgia", "Eliza", "Lulu", "Nannie", "Lottie", "Amanda", "Belle", "Charlotte", "Rebecca", "Ruth", "Viola", "Olive", "Amelia", "Hannah", "Jane", "Virginia", "Emily", "Matilda", "Irene", "Kathryn", "Esther", "Willie", "Henrietta", "Ollie", "Amy", "Rachel", "Sara", "Estella", "Theresa", "Augusta", "Ora", "Pauline", "Josie", "Lola", "Sophia", "Leona", "Anne", "Mildred", "Ann", "Beulah", "Callie", "Lou", "Delia", "Eleanor", "Barbara", "Iva", "Louisa", "Maria", "Mayme", "Evelyn", "Estelle", "Nina", "Betty", "Marion", "Bettie", "Dorothy", "Luella", "Inez", "Lela", "Rosie", "Allie", "Millie", "Janie", "Cornelia", "Victoria", "Ruby", "Winifred", "Alta", "Celia", "Christine", "Beatrice", "Birdie", "Harriett", "Mable", "Myra", "Sophie", "Tillie", "Isabel", "Sylvia", "Carolyn", "Isabelle", "Leila", "Sally", "Ina", "Essie", "Bertie", "Nell", "Alberta", "Katharine", "Lora", "Rena", "Mina", "Rhoda", "Mathilda", "Abbie", "Eula", "Dollie", "Hettie", "Eunice", "Fanny", "Ola", "Lenora", "Adelaide", "Christina", "Lelia", "Nelle", "Sue", "Johanna", "Lilly", "Lucinda", "Minerva", "Lettie", "Roxie", "Cynthia", "Helena", "Hilda", "Hulda", "Bernice", "Genevieve", "Jean", "Cordelia", "Marian", "Francis", "Jeanette", "Adeline", "Gussie", "Leah", "Lois", "Lura", "Mittie", "Hallie", "Isabella", "Olga", "Phoebe", "Teresa", "Hester", "Lida", "Lina", "Winnie", "Claudia", "Marguerite", "Vera", "Cecelia", "Bess", "Emilie", "John", "Rosetta", "Verna", "Myrtie", "Cecilia", "Elva", "Olivia", "Ophelia", "Georgie", "Elnora", "Violet", "Adele", "Lily", "Linnie", "Loretta", "Madge", "Polly", "Virgie", "Eugenia", "Lucile", "Lucille", "Mabelle", "Rosalie"] }; Chance.prototype.first = function (options) { options = initOptions(options, {gender: this.gender()}); - return this.pick(this.get("firstNames")[options.gender.toLowerCase()]); + return this.pick(firstNames[options.gender.toLowerCase()]); }; Chance.prototype.gender = function () { return this.pick(['Male', 'Female']); }; + var lastNames = ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin', 'Thompson', 'Garcia', 'Martinez', 'Robinson', 'Clark', 'Rodriguez', 'Lewis', 'Lee', 'Walker', 'Hall', 'Allen', 'Young', 'Hernandez', 'King', 'Wright', 'Lopez', 'Hill', 'Scott', 'Green', 'Adams', 'Baker', 'Gonzalez', 'Nelson', 'Carter', 'Mitchell', 'Perez', 'Roberts', 'Turner', 'Phillips', 'Campbell', 'Parker', 'Evans', 'Edwards', 'Collins', 'Stewart', 'Sanchez', 'Morris', 'Rogers', 'Reed', 'Cook', 'Morgan', 'Bell', 'Murphy', 'Bailey', 'Rivera', 'Cooper', 'Richardson', 'Cox', 'Howard', 'Ward', 'Torres', 'Peterson', 'Gray', 'Ramirez', 'James', 'Watson', 'Brooks', 'Kelly', 'Sanders', 'Price', 'Bennett', 'Wood', 'Barnes', 'Ross', 'Henderson', 'Coleman', 'Jenkins', 'Perry', 'Powell', 'Long', 'Patterson', 'Hughes', 'Flores', 'Washington', 'Butler', 'Simmons', 'Foster', 'Gonzales', 'Bryant', 'Alexander', 'Russell', 'Griffin', 'Diaz', 'Hayes', 'Myers', 'Ford', 'Hamilton', 'Graham', 'Sullivan', 'Wallace', 'Woods', 'Cole', 'West', 'Jordan', 'Owens', 'Reynolds', 'Fisher', 'Ellis', 'Harrison', 'Gibson', 'McDonald', 'Cruz', 'Marshall', 'Ortiz', 'Gomez', 'Murray', 'Freeman', 'Wells', 'Webb', 'Simpson', 'Stevens', 'Tucker', 'Porter', 'Hunter', 'Hicks', 'Crawford', 'Henry', 'Boyd', 'Mason', 'Morales', 'Kennedy', 'Warren', 'Dixon', 'Ramos', 'Reyes', 'Burns', 'Gordon', 'Shaw', 'Holmes', 'Rice', 'Robertson', 'Hunt', 'Black', 'Daniels', 'Palmer', 'Mills', 'Nichols', 'Grant', 'Knight', 'Ferguson', 'Rose', 'Stone', 'Hawkins', 'Dunn', 'Perkins', 'Hudson', 'Spencer', 'Gardner', 'Stephens', 'Payne', 'Pierce', 'Berry', 'Matthews', 'Arnold', 'Wagner', 'Willis', 'Ray', 'Watkins', 'Olson', 'Carroll', 'Duncan', 'Snyder', 'Hart', 'Cunningham', 'Bradley', 'Lane', 'Andrews', 'Ruiz', 'Harper', 'Fox', 'Riley', 'Armstrong', 'Carpenter', 'Weaver', 'Greene', 'Lawrence', 'Elliott', 'Chavez', 'Sims', 'Austin', 'Peters', 'Kelley', 'Franklin', 'Lawson', 'Fields', 'Gutierrez', 'Ryan', 'Schmidt', 'Carr', 'Vasquez', 'Castillo', 'Wheeler', 'Chapman', 'Oliver', 'Montgomery', 'Richards', 'Williamson', 'Johnston', 'Banks', 'Meyer', 'Bishop', 'McCoy', 'Howell', 'Alvarez', 'Morrison', 'Hansen', 'Fernandez', 'Garza', 'Harvey', 'Little', 'Burton', 'Stanley', 'Nguyen', 'George', 'Jacobs', 'Reid', 'Kim', 'Fuller', 'Lynch', 'Dean', 'Gilbert', 'Garrett', 'Romero', 'Welch', 'Larson', 'Frazier', 'Burke', 'Hanson', 'Day', 'Mendoza', 'Moreno', 'Bowman', 'Medina', 'Fowler', 'Brewer', 'Hoffman', 'Carlson', 'Silva', 'Pearson', 'Holland', 'Douglas', 'Fleming', 'Jensen', 'Vargas', 'Byrd', 'Davidson', 'Hopkins', 'May', 'Terry', 'Herrera', 'Wade', 'Soto', 'Walters', 'Curtis', 'Neal', 'Caldwell', 'Lowe', 'Jennings', 'Barnett', 'Graves', 'Jimenez', 'Horton', 'Shelton', 'Barrett', 'Obrien', 'Castro', 'Sutton', 'Gregory', 'McKinney', 'Lucas', 'Miles', 'Craig', 'Rodriquez', 'Chambers', 'Holt', 'Lambert', 'Fletcher', 'Watts', 'Bates', 'Hale', 'Rhodes', 'Pena', 'Beck', 'Newman', 'Haynes', 'McDaniel', 'Mendez', 'Bush', 'Vaughn', 'Parks', 'Dawson', 'Santiago', 'Norris', 'Hardy', 'Love', 'Steele', 'Curry', 'Powers', 'Schultz', 'Barker', 'Guzman', 'Page', 'Munoz', 'Ball', 'Keller', 'Chandler', 'Weber', 'Leonard', 'Walsh', 'Lyons', 'Ramsey', 'Wolfe', 'Schneider', 'Mullins', 'Benson', 'Sharp', 'Bowen', 'Daniel', 'Barber', 'Cummings', 'Hines', 'Baldwin', 'Griffith', 'Valdez', 'Hubbard', 'Salazar', 'Reeves', 'Warner', 'Stevenson', 'Burgess', 'Santos', 'Tate', 'Cross', 'Garner', 'Mann', 'Mack', 'Moss', 'Thornton', 'Dennis', 'McGee', 'Farmer', 'Delgado', 'Aguilar', 'Vega', 'Glover', 'Manning', 'Cohen', 'Harmon', 'Rodgers', 'Robbins', 'Newton', 'Todd', 'Blair', 'Higgins', 'Ingram', 'Reese', 'Cannon', 'Strickland', 'Townsend', 'Potter', 'Goodwin', 'Walton', 'Rowe', 'Hampton', 'Ortega', 'Patton', 'Swanson', 'Joseph', 'Francis', 'Goodman', 'Maldonado', 'Yates', 'Becker', 'Erickson', 'Hodges', 'Rios', 'Conner', 'Adkins', 'Webster', 'Norman', 'Malone', 'Hammond', 'Flowers', 'Cobb', 'Moody', 'Quinn', 'Blake', 'Maxwell', 'Pope', 'Floyd', 'Osborne', 'Paul', 'McCarthy', 'Guerrero', 'Lindsey', 'Estrada', 'Sandoval', 'Gibbs', 'Tyler', 'Gross', 'Fitzgerald', 'Stokes', 'Doyle', 'Sherman', 'Saunders', 'Wise', 'Colon', 'Gill', 'Alvarado', 'Greer', 'Padilla', 'Simon', 'Waters', 'Nunez', 'Ballard', 'Schwartz', 'McBride', 'Houston', 'Christensen', 'Klein', 'Pratt', 'Briggs', 'Parsons', 'McLaughlin', 'Zimmerman', 'French', 'Buchanan', 'Moran', 'Copeland', 'Roy', 'Pittman', 'Brady', 'McCormick', 'Holloway', 'Brock', 'Poole', 'Frank', 'Logan', 'Owen', 'Bass', 'Marsh', 'Drake', 'Wong', 'Jefferson', 'Park', 'Morton', 'Abbott', 'Sparks', 'Patrick', 'Norton', 'Huff', 'Clayton', 'Massey', 'Lloyd', 'Figueroa', 'Carson', 'Bowers', 'Roberson', 'Barton', 'Tran', 'Lamb', 'Harrington', 'Casey', 'Boone', 'Cortez', 'Clarke', 'Mathis', 'Singleton', 'Wilkins', 'Cain', 'Bryan', 'Underwood', 'Hogan', 'McKenzie', 'Collier', 'Luna', 'Phelps', 'McGuire', 'Allison', 'Bridges', 'Wilkerson', 'Nash', 'Summers', 'Atkins']; + Chance.prototype.last = function () { - return this.pick(this.get("lastNames")); + return this.pick(lastNames); }; Chance.prototype.name = function (options) { @@ -492,30 +420,19 @@ } if (options.prefix) { - name = this.prefix(options) + ' ' + name; + name = this.prefix() + ' ' + name; } return name; }; - // Return the list of available name prefixes based on supplied gender. - Chance.prototype.name_prefixes = function (gender) { - gender = gender || "all"; - - var prefixes = [ - { name: 'Doctor', abbreviation: 'Dr.' } + Chance.prototype.name_prefixes = function () { + return [ + {name: 'Doctor', abbreviation: 'Dr.'}, + {name: 'Miss', abbreviation: 'Miss'}, + {name: 'Misses', abbreviation: 'Mrs.'}, + {name: 'Mister', abbreviation: 'Mr.'} ]; - - if (gender === "male" || gender === "all") { - prefixes.push({ name: 'Mister', abbreviation: 'Mr.' }); - } - - if (gender === "female" || gender === "all") { - prefixes.push({ name: 'Miss', abbreviation: 'Miss' }); - prefixes.push({ name: 'Misses', abbreviation: 'Mrs.' }); - } - - return prefixes; }; // Alias for name_prefix @@ -524,37 +441,16 @@ }; Chance.prototype.name_prefix = function (options) { - options = initOptions(options, { gender: "all" }); + options = initOptions(options); return options.full ? - this.pick(this.name_prefixes(options.gender)).name : - this.pick(this.name_prefixes(options.gender)).abbreviation; - }; - - Chance.prototype.ssn = function (options) { - options = initOptions(options, {ssnFour: false, dashes: true}); - var ssn_pool = "1234567890", - ssn, - dash = options.dashes ? '-' : ''; - - if(!options.ssnFour) { - ssn = this.string({pool: ssn_pool, length: 3}) + dash + - this.string({pool: ssn_pool, length: 2}) + dash + - this.string({pool: ssn_pool, length: 4}); - } else { - ssn = this.string({pool: ssn_pool, length: 4}); - } - return ssn; + this.pick(this.name_prefixes()).name : + this.pick(this.name_prefixes()).abbreviation; }; // -- End Person -- // -- Web -- - // Apple Push Token - Chance.prototype.apple_token = function (options) { - return this.string({ pool: "abcdef1234567890", length: 64 }); - }; - Chance.prototype.color = function (options) { function gray(value, delimiter) { return [value, value, value].join(delimiter || ''); @@ -589,7 +485,7 @@ Chance.prototype.email = function (options) { options = initOptions(options); - return this.word({length: options.length}) + '@' + (options.domain || this.domain()); + return this.word() + '@' + (options.domain || this.domain()); }; Chance.prototype.fbid = function () { @@ -599,7 +495,6 @@ Chance.prototype.google_analytics = function () { var account = this.pad(this.natural({max: 999999}), 6); var property = this.pad(this.natural({max: 99}), 2); - return 'UA-' + account + '-' + property; }; @@ -617,9 +512,12 @@ }; Chance.prototype.ipv6 = function () { - var ip_addr = this.n(this.hash, 8, {length: 4}); + var ip_addr = ""; - return ip_addr.join(":"); + for (var i = 0; i < 8; i++) { + ip_addr += this.hash({length: 4}) + ':'; + } + return ip_addr.substr(0, ip_addr.length - 1); }; Chance.prototype.klout = function () { @@ -640,25 +538,17 @@ // -- End Web -- - // -- Location -- + // -- Address -- Chance.prototype.address = function (options) { options = initOptions(options); return this.natural({min: 5, max: 2000}) + ' ' + this.street(options); }; - Chance.prototype.altitude = function (options) { - options = initOptions(options, {fixed : 5, max: 8848}); - return this.floating({min: 0, max: options.max, fixed: options.fixed}); - }; - Chance.prototype.areacode = function (options) { options = initOptions(options, {parens : true}); // Don't want area codes to start with 1, or have a 9 as the second digit - var areacode = this.natural({min: 2, max: 9}).toString() + - this.natural({min: 0, max: 8}).toString() + - this.natural({min: 0, max: 9}).toString(); - + var areacode = this.natural({min: 2, max: 9}).toString() + this.natural({min: 0, max: 8}).toString() + this.natural({min: 0, max: 9}).toString(); return options.parens ? '(' + areacode + ')' : areacode; }; @@ -671,19 +561,19 @@ return this.latitude(options) + ', ' + this.longitude(options); }; - Chance.prototype.depth = function (options) { - options = initOptions(options, {fixed: 5, min: -2550}); - return this.floating({min: options.min, max: 0, fixed: options.fixed}); + Chance.prototype.geoJson = function (options) { + options = initOptions(options); + return this.latitude(options) + ', ' + this.longitude(options) + ', ' + this.altitude(options); }; - Chance.prototype.geohash = function (options) { - options = initOptions(options, { length: 7 }); - return this.string({ length: options.length, pool: '0123456789bcdefghjkmnpqrstuvwxyz' }); + Chance.prototype.altitude = function (options) { + options = initOptions(options, {fixed : 5}); + return this.floating({min: 0, max: 32736000, fixed: options.fixed}); }; - Chance.prototype.geojson = function (options) { - options = initOptions(options); - return this.latitude(options) + ', ' + this.longitude(options) + ', ' + this.altitude(options); + Chance.prototype.depth = function (options) { + options = initOptions(options, {fixed: 5}); + return this.floating({min: -35994, max: 0, fixed: options.fixed}); }; Chance.prototype.latitude = function (options) { @@ -702,12 +592,8 @@ options.parens = false; } var areacode = this.areacode(options).toString(); - var exchange = this.natural({min: 2, max: 9}).toString() + - this.natural({min: 0, max: 9}).toString() + - this.natural({min: 0, max: 9}).toString(); - + var exchange = this.natural({min: 2, max: 9}).toString() + this.natural({min: 0, max: 9}).toString() + this.natural({min: 0, max: 9}).toString(); var subscriber = this.natural({min: 1000, max: 9999}).toString(); // this could be random [0-9]{4} - return options.formatted ? areacode + ' ' + exchange + '-' + subscriber : areacode + exchange + subscriber; }; @@ -723,7 +609,25 @@ }; Chance.prototype.provinces = function () { - return this.get("provinces"); + return [ + {name: 'Alberta', abbreviation: 'AB'}, + {name: 'British Columbia', abbreviation: 'BC'}, + {name: 'Manitoba', abbreviation: 'MB'}, + {name: 'New Brunswick', abbreviation: 'NB'}, + {name: 'Newfoundland and Labrador', abbreviation: 'NL'}, + {name: 'Nova Scotia', abbreviation: 'NS'}, + {name: 'Ontario', abbreviation: 'ON'}, + {name: 'Prince Edward Island', abbreviation: 'PE'}, + {name: 'Quebec', abbreviation: 'QC'}, + {name: 'Saskatchewan', abbreviation: 'SK'}, + + // The case could be made that the following are not actually provinces + // since they are technically considered "territories" however they all + // look the same on an envelope! + {name: 'Northwest Territories', abbreviation: 'NT'}, + {name: 'Nunavut', abbreviation: 'NU'}, + {name: 'Yukon', abbreviation: 'YT'} + ]; }; Chance.prototype.province = function (options) { @@ -732,30 +636,97 @@ this.pick(this.provinces()).abbreviation; }; + Chance.prototype.radio = function (options) { + // Initial Letter (Typically Designated by Side of Mississippi River) + options = initOptions(options, {side : "?"}); + var fl = ""; + switch (options.side.toLowerCase()) { + case "east": + case "e": + fl = "W"; + break; + case "west": + case "w": + fl = "K"; + break; + default: + fl = this.character({pool: "KW"}); + break; + } + + return fl + this.character({alpha: true, casing: "upper"}) + this.character({alpha: true, casing: "upper"}) + this.character({alpha: true, casing: "upper"}); + }; + Chance.prototype.state = function (options) { return (options && options.full) ? - this.pick(this.states(options)).name : - this.pick(this.states(options)).abbreviation; + this.pick(this.states()).name : + this.pick(this.states()).abbreviation; }; - Chance.prototype.states = function (options) { - options = initOptions(options); - - var states, - us_states_and_dc = this.get("us_states_and_dc"), - territories = this.get("territories"), - armed_forces = this.get("armed_forces"); - - states = us_states_and_dc; - - if (options.territories) { - states = states.concat(territories); - } - if (options.armed_forces) { - states = states.concat(armed_forces); - } - - return states; + Chance.prototype.states = function () { + return [ + {name: 'Alabama', abbreviation: 'AL'}, + {name: 'Alaska', abbreviation: 'AK'}, + {name: 'American Samoa', abbreviation: 'AS'}, + {name: 'Arizona', abbreviation: 'AZ'}, + {name: 'Arkansas', abbreviation: 'AR'}, + {name: 'Armed Forces Europe', abbreviation: 'AE'}, + {name: 'Armed Forces Pacific', abbreviation: 'AP'}, + {name: 'Armed Forces the Americas', abbreviation: 'AA'}, + {name: 'California', abbreviation: 'CA'}, + {name: 'Colorado', abbreviation: 'CO'}, + {name: 'Connecticut', abbreviation: 'CT'}, + {name: 'Delaware', abbreviation: 'DE'}, + {name: 'District of Columbia', abbreviation: 'DC'}, + {name: 'Federated States of Micronesia', abbreviation: 'FM'}, + {name: 'Florida', abbreviation: 'FL'}, + {name: 'Georgia', abbreviation: 'GA'}, + {name: 'Guam', abbreviation: 'GU'}, + {name: 'Hawaii', abbreviation: 'HI'}, + {name: 'Idaho', abbreviation: 'ID'}, + {name: 'Illinois', abbreviation: 'IL'}, + {name: 'Indiana', abbreviation: 'IN'}, + {name: 'Iowa', abbreviation: 'IA'}, + {name: 'Kansas', abbreviation: 'KS'}, + {name: 'Kentucky', abbreviation: 'KY'}, + {name: 'Louisiana', abbreviation: 'LA'}, + {name: 'Maine', abbreviation: 'ME'}, + {name: 'Marshall Islands', abbreviation: 'MH'}, + {name: 'Maryland', abbreviation: 'MD'}, + {name: 'Massachusetts', abbreviation: 'MA'}, + {name: 'Michigan', abbreviation: 'MI'}, + {name: 'Minnesota', abbreviation: 'MN'}, + {name: 'Mississippi', abbreviation: 'MS'}, + {name: 'Missouri', abbreviation: 'MO'}, + {name: 'Montana', abbreviation: 'MT'}, + {name: 'Nebraska', abbreviation: 'NE'}, + {name: 'Nevada', abbreviation: 'NV'}, + {name: 'New Hampshire', abbreviation: 'NH'}, + {name: 'New Jersey', abbreviation: 'NJ'}, + {name: 'New Mexico', abbreviation: 'NM'}, + {name: 'New York', abbreviation: 'NY'}, + {name: 'North Carolina', abbreviation: 'NC'}, + {name: 'North Dakota', abbreviation: 'ND'}, + {name: 'Northern Mariana Islands', abbreviation: 'MP'}, + {name: 'Ohio', abbreviation: 'OH'}, + {name: 'Oklahoma', abbreviation: 'OK'}, + {name: 'Oregon', abbreviation: 'OR'}, + {name: 'Pennsylvania', abbreviation: 'PA'}, + {name: 'Puerto Rico', abbreviation: 'PR'}, + {name: 'Rhode Island', abbreviation: 'RI'}, + {name: 'South Carolina', abbreviation: 'SC'}, + {name: 'South Dakota', abbreviation: 'SD'}, + {name: 'Tennessee', abbreviation: 'TN'}, + {name: 'Texas', abbreviation: 'TX'}, + {name: 'Utah', abbreviation: 'UT'}, + {name: 'Vermont', abbreviation: 'VT'}, + {name: 'Virgin Islands, U.S.', abbreviation: 'VI'}, + {name: 'Virginia', abbreviation: 'VA'}, + {name: 'Washington', abbreviation: 'WA'}, + {name: 'West Virginia', abbreviation: 'WV'}, + {name: 'Wisconsin', abbreviation: 'WI'}, + {name: 'Wyoming', abbreviation: 'WY'} + ]; }; Chance.prototype.street = function (options) { @@ -776,23 +747,69 @@ Chance.prototype.street_suffixes = function () { // These are the most common suffixes. - return this.get("street_suffixes"); + return [ + {name: 'Avenue', abbreviation: 'Ave'}, + {name: 'Boulevard', abbreviation: 'Blvd'}, + {name: 'Center', abbreviation: 'Ctr'}, + {name: 'Circle', abbreviation: 'Cir'}, + {name: 'Court', abbreviation: 'Ct'}, + {name: 'Drive', abbreviation: 'Dr'}, + {name: 'Extension', abbreviation: 'Ext'}, + {name: 'Glen', abbreviation: 'Gln'}, + {name: 'Grove', abbreviation: 'Grv'}, + {name: 'Heights', abbreviation: 'Hts'}, + {name: 'Highway', abbreviation: 'Hwy'}, + {name: 'Junction', abbreviation: 'Jct'}, + {name: 'Key', abbreviation: 'Key'}, + {name: 'Lane', abbreviation: 'Ln'}, + {name: 'Loop', abbreviation: 'Loop'}, + {name: 'Manor', abbreviation: 'Mnr'}, + {name: 'Mill', abbreviation: 'Mill'}, + {name: 'Park', abbreviation: 'Park'}, + {name: 'Parkway', abbreviation: 'Pkwy'}, + {name: 'Pass', abbreviation: 'Pass'}, + {name: 'Path', abbreviation: 'Path'}, + {name: 'Pike', abbreviation: 'Pike'}, + {name: 'Place', abbreviation: 'Pl'}, + {name: 'Plaza', abbreviation: 'Plz'}, + {name: 'Point', abbreviation: 'Pt'}, + {name: 'Ridge', abbreviation: 'Rdg'}, + {name: 'River', abbreviation: 'Riv'}, + {name: 'Road', abbreviation: 'Rd'}, + {name: 'Square', abbreviation: 'Sq'}, + {name: 'Street', abbreviation: 'St'}, + {name: 'Terrace', abbreviation: 'Ter'}, + {name: 'Trail', abbreviation: 'Trl'}, + {name: 'Turnpike', abbreviation: 'Tpke'}, + {name: 'View', abbreviation: 'Vw'}, + {name: 'Way', abbreviation: 'Way'} + ]; + }; + + Chance.prototype.tv = function (options) { + return this.radio(options); }; // Note: only returning US zip codes, internationalization will be a whole // other beast to tackle at some point. Chance.prototype.zip = function (options) { - var zip = this.n(this.natural, 5, {max: 9}); + var zip = ""; - if (options && options.plusfour === true) { - zip.push('-'); - zip = zip.concat(this.n(this.natural, 4, {max: 9})); + for (var i = 0; i < 5; i++) { + zip += this.natural({max: 9}).toString(); } - return zip.join(""); - }; + if (options && options.plusfour === true) { + zip += '-'; + for (i = 0; i < 4; i++) { + zip += this.natural({max: 9}).toString(); + } + } + + return zip; + }; - // -- End Location -- + // -- End Address -- // -- Time @@ -856,7 +873,21 @@ }; Chance.prototype.months = function () { - return this.get("months"); + return [ + {name: 'January', short_name: 'Jan', numeric: '01', days: 31}, + // Not messing with leap years... + {name: 'February', short_name: 'Feb', numeric: '02', days: 28}, + {name: 'March', short_name: 'Mar', numeric: '03', days: 31}, + {name: 'April', short_name: 'Apr', numeric: '04', days: 30}, + {name: 'May', short_name: 'May', numeric: '05', days: 31}, + {name: 'June', short_name: 'Jun', numeric: '06', days: 30}, + {name: 'July', short_name: 'Jul', numeric: '07', days: 31}, + {name: 'August', short_name: 'Aug', numeric: '08', days: 31}, + {name: 'September', short_name: 'Sep', numeric: '09', days: 30}, + {name: 'October', short_name: 'Oct', numeric: '10', days: 31}, + {name: 'November', short_name: 'Nov', numeric: '11', days: 30}, + {name: 'December', short_name: 'Dec', numeric: '12', days: 31} + ]; }; Chance.prototype.second = function () { @@ -884,17 +915,18 @@ Chance.prototype.cc = function (options) { options = initOptions(options); - var type, number, to_generate; + var type, number, to_generate, type_name; type = (options.type) ? this.cc_type({ name: options.type, raw: true }) : this.cc_type({ raw: true }); - number = type.prefix.split(""); to_generate = type.length - type.prefix.length - 1; // Generates n - 1 digits - number = number.concat(this.n(this.integer, to_generate, {min: 0, max: 9})); + for (var i = 0; i < to_generate; i++) { + number.push(this.integer({min: 0, max: 9})); + } // Generates the last digit according to Luhn algorithm number.push(this.luhn_calculate(number.join(""))); @@ -904,7 +936,25 @@ Chance.prototype.cc_types = function () { // http://en.wikipedia.org/wiki/Bank_card_number#Issuer_identification_number_.28IIN.29 - return this.get("cc_types"); + return [ + {name: "American Express", short_name: 'amex', prefix: '34', length: 15}, + {name: "Bankcard", short_name: 'bankcard', prefix: '5610', length: 16}, + {name: "China UnionPay", short_name: 'chinaunion', prefix: '62', length: 16}, + {name: "Diners Club Carte Blanche", short_name: 'dccarte', prefix: '300', length: 14}, + {name: "Diners Club enRoute", short_name: 'dcenroute', prefix: '2014', length: 15}, + {name: "Diners Club International", short_name: 'dcintl', prefix: '36', length: 14}, + {name: "Diners Club United States & Canada", short_name: 'dcusc', prefix: '54', length: 16}, + {name: "Discover Card", short_name: 'discover', prefix: '6011', length: 16}, + {name: "InstaPayment", short_name: 'instapay', prefix: '637', length: 16}, + {name: "JCB", short_name: 'jcb', prefix: '3528', length: 16}, + {name: "Laser", short_name: 'laser', prefix: '6304', length: 16}, + {name: "Maestro", short_name: 'maestro', prefix: '5018', length: 16}, + {name: "Mastercard", short_name: 'mc', prefix: '51', length: 16}, + {name: "Solo", short_name: 'solo', prefix: '6334', length: 16}, + {name: "Switch", short_name: 'switch', prefix: '4903', length: 16}, + {name: "Visa", short_name: 'visa', prefix: '4', length: 16}, + {name: "Visa Electron", short_name: 'electron', prefix: '4026', length: 16} + ]; }; Chance.prototype.cc_type = function (options) { @@ -930,35 +980,6 @@ return options.raw ? type : type.name; }; - //return all world currency by ISO 4217 - Chance.prototype.currency_types = function () { - return this.get("currency_types"); - }; - - //return random world currency by ISO 4217 - Chance.prototype.currency = function () { - return this.pick(this.currency_types()); - }; - - //Return random correct currency exchange pair (e.g. EUR/USD) or array of currency code - Chance.prototype.currency_pair = function (returnAsString) { - var currencies = this.unique(this.currency, 2, { - comparator: function(arr, val) { - - return arr.reduce(function(acc, item) { - // If a match has been found, short circuit check and just return - return acc || (item.code === val.code); - }, false); - } - }); - - if (returnAsString) { - return currencies[0] + '/' + currencies[1]; - } else { - return currencies; - } - }; - Chance.prototype.dollar = function (options) { // By default, a somewhat more sane max for dollar than all available numbers options = initOptions(options, {max : 10000, min : 0}); @@ -998,14 +1019,13 @@ Chance.prototype.exp_month = function (options) { options = initOptions(options); - var month, month_int, - curMonth = new Date().getMonth(); + var month, month_int; if (options.future) { do { month = this.month({raw: true}).numeric; month_int = parseInt(month, 10); - } while (month_int < curMonth); + } while (month_int < new Date().getMonth()); } else { month = this.month({raw: true}).numeric; } @@ -1022,20 +1042,14 @@ // -- Miscellaneous -- // Dice - For all the board game geeks out there, myself included ;) - function diceFn (range) { - return function () { - return this.natural(range); - }; - } - Chance.prototype.d4 = diceFn({min: 1, max: 4}); - Chance.prototype.d6 = diceFn({min: 1, max: 6}); - Chance.prototype.d8 = diceFn({min: 1, max: 8}); - Chance.prototype.d10 = diceFn({min: 1, max: 10}); - Chance.prototype.d12 = diceFn({min: 1, max: 12}); - Chance.prototype.d20 = diceFn({min: 1, max: 20}); - Chance.prototype.d30 = diceFn({min: 1, max: 30}); - Chance.prototype.d100 = diceFn({min: 1, max: 100}); - + Chance.prototype.d4 = function () { return this.natural({min: 1, max: 4}); }; + Chance.prototype.d6 = function () { return this.natural({min: 1, max: 6}); }; + Chance.prototype.d8 = function () { return this.natural({min: 1, max: 8}); }; + Chance.prototype.d10 = function () { return this.natural({min: 1, max: 10}); }; + Chance.prototype.d12 = function () { return this.natural({min: 1, max: 12}); }; + Chance.prototype.d20 = function () { return this.natural({min: 1, max: 20}); }; + Chance.prototype.d30 = function () { return this.natural({min: 1, max: 30}); }; + Chance.prototype.d100 = function () { return this.natural({min: 1, max: 100}); }; Chance.prototype.rpg = function (thrown, options) { options = initOptions(options); if (thrown === null) { @@ -1056,22 +1070,22 @@ // Guid Chance.prototype.guid = function (options) { - options = initOptions(options, { version: 5 }); + options = options || {version: 5}; - var guid_pool = "abcdef1234567890", - variant_pool = "ab89", - guid = this.string({ pool: guid_pool, length: 8 }) + '-' + - this.string({ pool: guid_pool, length: 4 }) + '-' + + var guid_pool = "ABCDEF1234567890", + variant_pool = "AB89", + guid = this.string({pool: guid_pool, length: 8}) + '-' + + this.string({pool: guid_pool, length: 4}) + '-' + // The Version options.version + - this.string({ pool: guid_pool, length: 3 }) + '-' + + this.string({pool: guid_pool, length: 3}) + '-' + // The Variant - this.string({ pool: variant_pool, length: 1 }) + - this.string({ pool: guid_pool, length: 3 }) + '-' + - this.string({ pool: guid_pool, length: 12 }); + this.string({pool: variant_pool, length: 1}) + + this.string({pool: guid_pool, length: 3}) + '-' + + this.string({pool: guid_pool, length: 12}); return guid; }; - + // Hash Chance.prototype.hash = function (options) { options = initOptions(options, {length : 40, casing: 'lower'}); @@ -1088,10 +1102,8 @@ Chance.prototype.luhn_calculate = function (num) { var digits = num.toString().split("").reverse(); var sum = 0; - var digit; - for (var i = 0, l = digits.length; l > i; ++i) { - digit = +digits[i]; + var digit = +digits[i]; if (i % 2 === 0) { digit *= 2; if (digit > 9) { @@ -1103,454 +1115,13 @@ return (sum * 9) % 10; }; - - var data = { - - firstNames: { - "male": ["James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Charles", "Thomas", "Christopher", "Daniel", "Matthew", "George", "Donald", "Anthony", "Paul", "Mark", "Edward", "Steven", "Kenneth", "Andrew", "Brian", "Joshua", "Kevin", "Ronald", "Timothy", "Jason", "Jeffrey", "Frank", "Gary", "Ryan", "Nicholas", "Eric", "Stephen", "Jacob", "Larry", "Jonathan", "Scott", "Raymond", "Justin", "Brandon", "Gregory", "Samuel", "Benjamin", "Patrick", "Jack", "Henry", "Walter", "Dennis", "Jerry", "Alexander", "Peter", "Tyler", "Douglas", "Harold", "Aaron", "Jose", "Adam", "Arthur", "Zachary", "Carl", "Nathan", "Albert", "Kyle", "Lawrence", "Joe", "Willie", "Gerald", "Roger", "Keith", "Jeremy", "Terry", "Harry", "Ralph", "Sean", "Jesse", "Roy", "Louis", "Billy", "Austin", "Bruce", "Eugene", "Christian", "Bryan", "Wayne", "Russell", "Howard", "Fred", "Ethan", "Jordan", "Philip", "Alan", "Juan", "Randy", "Vincent", "Bobby", "Dylan", "Johnny", "Phillip", "Victor", "Clarence", "Ernest", "Martin", "Craig", "Stanley", "Shawn", "Travis", "Bradley", "Leonard", "Earl", "Gabriel", "Jimmy", "Francis", "Todd", "Noah", "Danny", "Dale", "Cody", "Carlos", "Allen", "Frederick", "Logan", "Curtis", "Alex", "Joel", "Luis", "Norman", "Marvin", "Glenn", "Tony", "Nathaniel", "Rodney", "Melvin", "Alfred", "Steve", "Cameron", "Chad", "Edwin", "Caleb", "Evan", "Antonio", "Lee", "Herbert", "Jeffery", "Isaac", "Derek", "Ricky", "Marcus", "Theodore", "Elijah", "Luke", "Jesus", "Eddie", "Troy", "Mike", "Dustin", "Ray", "Adrian", "Bernard", "Leroy", "Angel", "Randall", "Wesley", "Ian", "Jared", "Mason", "Hunter", "Calvin", "Oscar", "Clifford", "Jay", "Shane", "Ronnie", "Barry", "Lucas", "Corey", "Manuel", "Leo", "Tommy", "Warren", "Jackson", "Isaiah", "Connor", "Don", "Dean", "Jon", "Julian", "Miguel", "Bill", "Lloyd", "Charlie", "Mitchell", "Leon", "Jerome", "Darrell", "Jeremiah", "Alvin", "Brett", "Seth", "Floyd", "Jim", "Blake", "Micheal", "Gordon", "Trevor", "Lewis", "Erik", "Edgar", "Vernon", "Devin", "Gavin", "Jayden", "Chris", "Clyde", "Tom", "Derrick", "Mario", "Brent", "Marc", "Herman", "Chase", "Dominic", "Ricardo", "Franklin", "Maurice", "Max", "Aiden", "Owen", "Lester", "Gilbert", "Elmer", "Gene", "Francisco", "Glen", "Cory", "Garrett", "Clayton", "Sam", "Jorge", "Chester", "Alejandro", "Jeff", "Harvey", "Milton", "Cole", "Ivan", "Andre", "Duane", "Landon"], - "female": ["Mary", "Emma", "Elizabeth", "Minnie", "Margaret", "Ida", "Alice", "Bertha", "Sarah", "Annie", "Clara", "Ella", "Florence", "Cora", "Martha", "Laura", "Nellie", "Grace", "Carrie", "Maude", "Mabel", "Bessie", "Jennie", "Gertrude", "Julia", "Hattie", "Edith", "Mattie", "Rose", "Catherine", "Lillian", "Ada", "Lillie", "Helen", "Jessie", "Louise", "Ethel", "Lula", "Myrtle", "Eva", "Frances", "Lena", "Lucy", "Edna", "Maggie", "Pearl", "Daisy", "Fannie", "Josephine", "Dora", "Rosa", "Katherine", "Agnes", "Marie", "Nora", "May", "Mamie", "Blanche", "Stella", "Ellen", "Nancy", "Effie", "Sallie", "Nettie", "Della", "Lizzie", "Flora", "Susie", "Maud", "Mae", "Etta", "Harriet", "Sadie", "Caroline", "Katie", "Lydia", "Elsie", "Kate", "Susan", "Mollie", "Alma", "Addie", "Georgia", "Eliza", "Lulu", "Nannie", "Lottie", "Amanda", "Belle", "Charlotte", "Rebecca", "Ruth", "Viola", "Olive", "Amelia", "Hannah", "Jane", "Virginia", "Emily", "Matilda", "Irene", "Kathryn", "Esther", "Willie", "Henrietta", "Ollie", "Amy", "Rachel", "Sara", "Estella", "Theresa", "Augusta", "Ora", "Pauline", "Josie", "Lola", "Sophia", "Leona", "Anne", "Mildred", "Ann", "Beulah", "Callie", "Lou", "Delia", "Eleanor", "Barbara", "Iva", "Louisa", "Maria", "Mayme", "Evelyn", "Estelle", "Nina", "Betty", "Marion", "Bettie", "Dorothy", "Luella", "Inez", "Lela", "Rosie", "Allie", "Millie", "Janie", "Cornelia", "Victoria", "Ruby", "Winifred", "Alta", "Celia", "Christine", "Beatrice", "Birdie", "Harriett", "Mable", "Myra", "Sophie", "Tillie", "Isabel", "Sylvia", "Carolyn", "Isabelle", "Leila", "Sally", "Ina", "Essie", "Bertie", "Nell", "Alberta", "Katharine", "Lora", "Rena", "Mina", "Rhoda", "Mathilda", "Abbie", "Eula", "Dollie", "Hettie", "Eunice", "Fanny", "Ola", "Lenora", "Adelaide", "Christina", "Lelia", "Nelle", "Sue", "Johanna", "Lilly", "Lucinda", "Minerva", "Lettie", "Roxie", "Cynthia", "Helena", "Hilda", "Hulda", "Bernice", "Genevieve", "Jean", "Cordelia", "Marian", "Francis", "Jeanette", "Adeline", "Gussie", "Leah", "Lois", "Lura", "Mittie", "Hallie", "Isabella", "Olga", "Phoebe", "Teresa", "Hester", "Lida", "Lina", "Winnie", "Claudia", "Marguerite", "Vera", "Cecelia", "Bess", "Emilie", "John", "Rosetta", "Verna", "Myrtie", "Cecilia", "Elva", "Olivia", "Ophelia", "Georgie", "Elnora", "Violet", "Adele", "Lily", "Linnie", "Loretta", "Madge", "Polly", "Virgie", "Eugenia", "Lucile", "Lucille", "Mabelle", "Rosalie"] - }, - - lastNames: ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin', 'Thompson', 'Garcia', 'Martinez', 'Robinson', 'Clark', 'Rodriguez', 'Lewis', 'Lee', 'Walker', 'Hall', 'Allen', 'Young', 'Hernandez', 'King', 'Wright', 'Lopez', 'Hill', 'Scott', 'Green', 'Adams', 'Baker', 'Gonzalez', 'Nelson', 'Carter', 'Mitchell', 'Perez', 'Roberts', 'Turner', 'Phillips', 'Campbell', 'Parker', 'Evans', 'Edwards', 'Collins', 'Stewart', 'Sanchez', 'Morris', 'Rogers', 'Reed', 'Cook', 'Morgan', 'Bell', 'Murphy', 'Bailey', 'Rivera', 'Cooper', 'Richardson', 'Cox', 'Howard', 'Ward', 'Torres', 'Peterson', 'Gray', 'Ramirez', 'James', 'Watson', 'Brooks', 'Kelly', 'Sanders', 'Price', 'Bennett', 'Wood', 'Barnes', 'Ross', 'Henderson', 'Coleman', 'Jenkins', 'Perry', 'Powell', 'Long', 'Patterson', 'Hughes', 'Flores', 'Washington', 'Butler', 'Simmons', 'Foster', 'Gonzales', 'Bryant', 'Alexander', 'Russell', 'Griffin', 'Diaz', 'Hayes', 'Myers', 'Ford', 'Hamilton', 'Graham', 'Sullivan', 'Wallace', 'Woods', 'Cole', 'West', 'Jordan', 'Owens', 'Reynolds', 'Fisher', 'Ellis', 'Harrison', 'Gibson', 'McDonald', 'Cruz', 'Marshall', 'Ortiz', 'Gomez', 'Murray', 'Freeman', 'Wells', 'Webb', 'Simpson', 'Stevens', 'Tucker', 'Porter', 'Hunter', 'Hicks', 'Crawford', 'Henry', 'Boyd', 'Mason', 'Morales', 'Kennedy', 'Warren', 'Dixon', 'Ramos', 'Reyes', 'Burns', 'Gordon', 'Shaw', 'Holmes', 'Rice', 'Robertson', 'Hunt', 'Black', 'Daniels', 'Palmer', 'Mills', 'Nichols', 'Grant', 'Knight', 'Ferguson', 'Rose', 'Stone', 'Hawkins', 'Dunn', 'Perkins', 'Hudson', 'Spencer', 'Gardner', 'Stephens', 'Payne', 'Pierce', 'Berry', 'Matthews', 'Arnold', 'Wagner', 'Willis', 'Ray', 'Watkins', 'Olson', 'Carroll', 'Duncan', 'Snyder', 'Hart', 'Cunningham', 'Bradley', 'Lane', 'Andrews', 'Ruiz', 'Harper', 'Fox', 'Riley', 'Armstrong', 'Carpenter', 'Weaver', 'Greene', 'Lawrence', 'Elliott', 'Chavez', 'Sims', 'Austin', 'Peters', 'Kelley', 'Franklin', 'Lawson', 'Fields', 'Gutierrez', 'Ryan', 'Schmidt', 'Carr', 'Vasquez', 'Castillo', 'Wheeler', 'Chapman', 'Oliver', 'Montgomery', 'Richards', 'Williamson', 'Johnston', 'Banks', 'Meyer', 'Bishop', 'McCoy', 'Howell', 'Alvarez', 'Morrison', 'Hansen', 'Fernandez', 'Garza', 'Harvey', 'Little', 'Burton', 'Stanley', 'Nguyen', 'George', 'Jacobs', 'Reid', 'Kim', 'Fuller', 'Lynch', 'Dean', 'Gilbert', 'Garrett', 'Romero', 'Welch', 'Larson', 'Frazier', 'Burke', 'Hanson', 'Day', 'Mendoza', 'Moreno', 'Bowman', 'Medina', 'Fowler', 'Brewer', 'Hoffman', 'Carlson', 'Silva', 'Pearson', 'Holland', 'Douglas', 'Fleming', 'Jensen', 'Vargas', 'Byrd', 'Davidson', 'Hopkins', 'May', 'Terry', 'Herrera', 'Wade', 'Soto', 'Walters', 'Curtis', 'Neal', 'Caldwell', 'Lowe', 'Jennings', 'Barnett', 'Graves', 'Jimenez', 'Horton', 'Shelton', 'Barrett', 'Obrien', 'Castro', 'Sutton', 'Gregory', 'McKinney', 'Lucas', 'Miles', 'Craig', 'Rodriquez', 'Chambers', 'Holt', 'Lambert', 'Fletcher', 'Watts', 'Bates', 'Hale', 'Rhodes', 'Pena', 'Beck', 'Newman', 'Haynes', 'McDaniel', 'Mendez', 'Bush', 'Vaughn', 'Parks', 'Dawson', 'Santiago', 'Norris', 'Hardy', 'Love', 'Steele', 'Curry', 'Powers', 'Schultz', 'Barker', 'Guzman', 'Page', 'Munoz', 'Ball', 'Keller', 'Chandler', 'Weber', 'Leonard', 'Walsh', 'Lyons', 'Ramsey', 'Wolfe', 'Schneider', 'Mullins', 'Benson', 'Sharp', 'Bowen', 'Daniel', 'Barber', 'Cummings', 'Hines', 'Baldwin', 'Griffith', 'Valdez', 'Hubbard', 'Salazar', 'Reeves', 'Warner', 'Stevenson', 'Burgess', 'Santos', 'Tate', 'Cross', 'Garner', 'Mann', 'Mack', 'Moss', 'Thornton', 'Dennis', 'McGee', 'Farmer', 'Delgado', 'Aguilar', 'Vega', 'Glover', 'Manning', 'Cohen', 'Harmon', 'Rodgers', 'Robbins', 'Newton', 'Todd', 'Blair', 'Higgins', 'Ingram', 'Reese', 'Cannon', 'Strickland', 'Townsend', 'Potter', 'Goodwin', 'Walton', 'Rowe', 'Hampton', 'Ortega', 'Patton', 'Swanson', 'Joseph', 'Francis', 'Goodman', 'Maldonado', 'Yates', 'Becker', 'Erickson', 'Hodges', 'Rios', 'Conner', 'Adkins', 'Webster', 'Norman', 'Malone', 'Hammond', 'Flowers', 'Cobb', 'Moody', 'Quinn', 'Blake', 'Maxwell', 'Pope', 'Floyd', 'Osborne', 'Paul', 'McCarthy', 'Guerrero', 'Lindsey', 'Estrada', 'Sandoval', 'Gibbs', 'Tyler', 'Gross', 'Fitzgerald', 'Stokes', 'Doyle', 'Sherman', 'Saunders', 'Wise', 'Colon', 'Gill', 'Alvarado', 'Greer', 'Padilla', 'Simon', 'Waters', 'Nunez', 'Ballard', 'Schwartz', 'McBride', 'Houston', 'Christensen', 'Klein', 'Pratt', 'Briggs', 'Parsons', 'McLaughlin', 'Zimmerman', 'French', 'Buchanan', 'Moran', 'Copeland', 'Roy', 'Pittman', 'Brady', 'McCormick', 'Holloway', 'Brock', 'Poole', 'Frank', 'Logan', 'Owen', 'Bass', 'Marsh', 'Drake', 'Wong', 'Jefferson', 'Park', 'Morton', 'Abbott', 'Sparks', 'Patrick', 'Norton', 'Huff', 'Clayton', 'Massey', 'Lloyd', 'Figueroa', 'Carson', 'Bowers', 'Roberson', 'Barton', 'Tran', 'Lamb', 'Harrington', 'Casey', 'Boone', 'Cortez', 'Clarke', 'Mathis', 'Singleton', 'Wilkins', 'Cain', 'Bryan', 'Underwood', 'Hogan', 'McKenzie', 'Collier', 'Luna', 'Phelps', 'McGuire', 'Allison', 'Bridges', 'Wilkerson', 'Nash', 'Summers', 'Atkins'], - - provinces: [ - {name: 'Alberta', abbreviation: 'AB'}, - {name: 'British Columbia', abbreviation: 'BC'}, - {name: 'Manitoba', abbreviation: 'MB'}, - {name: 'New Brunswick', abbreviation: 'NB'}, - {name: 'Newfoundland and Labrador', abbreviation: 'NL'}, - {name: 'Nova Scotia', abbreviation: 'NS'}, - {name: 'Ontario', abbreviation: 'ON'}, - {name: 'Prince Edward Island', abbreviation: 'PE'}, - {name: 'Quebec', abbreviation: 'QC'}, - {name: 'Saskatchewan', abbreviation: 'SK'}, - - // The case could be made that the following are not actually provinces - // since they are technically considered "territories" however they all - // look the same on an envelope! - {name: 'Northwest Territories', abbreviation: 'NT'}, - {name: 'Nunavut', abbreviation: 'NU'}, - {name: 'Yukon', abbreviation: 'YT'} - ], - - us_states_and_dc: [ - {name: 'Alabama', abbreviation: 'AL'}, - {name: 'Alaska', abbreviation: 'AK'}, - {name: 'Arizona', abbreviation: 'AZ'}, - {name: 'Arkansas', abbreviation: 'AR'}, - {name: 'California', abbreviation: 'CA'}, - {name: 'Colorado', abbreviation: 'CO'}, - {name: 'Connecticut', abbreviation: 'CT'}, - {name: 'Delaware', abbreviation: 'DE'}, - {name: 'District of Columbia', abbreviation: 'DC'}, - {name: 'Florida', abbreviation: 'FL'}, - {name: 'Georgia', abbreviation: 'GA'}, - {name: 'Hawaii', abbreviation: 'HI'}, - {name: 'Idaho', abbreviation: 'ID'}, - {name: 'Illinois', abbreviation: 'IL'}, - {name: 'Indiana', abbreviation: 'IN'}, - {name: 'Iowa', abbreviation: 'IA'}, - {name: 'Kansas', abbreviation: 'KS'}, - {name: 'Kentucky', abbreviation: 'KY'}, - {name: 'Louisiana', abbreviation: 'LA'}, - {name: 'Maine', abbreviation: 'ME'}, - {name: 'Maryland', abbreviation: 'MD'}, - {name: 'Massachusetts', abbreviation: 'MA'}, - {name: 'Michigan', abbreviation: 'MI'}, - {name: 'Minnesota', abbreviation: 'MN'}, - {name: 'Mississippi', abbreviation: 'MS'}, - {name: 'Missouri', abbreviation: 'MO'}, - {name: 'Montana', abbreviation: 'MT'}, - {name: 'Nebraska', abbreviation: 'NE'}, - {name: 'Nevada', abbreviation: 'NV'}, - {name: 'New Hampshire', abbreviation: 'NH'}, - {name: 'New Jersey', abbreviation: 'NJ'}, - {name: 'New Mexico', abbreviation: 'NM'}, - {name: 'New York', abbreviation: 'NY'}, - {name: 'North Carolina', abbreviation: 'NC'}, - {name: 'North Dakota', abbreviation: 'ND'}, - {name: 'Ohio', abbreviation: 'OH'}, - {name: 'Oklahoma', abbreviation: 'OK'}, - {name: 'Oregon', abbreviation: 'OR'}, - {name: 'Pennsylvania', abbreviation: 'PA'}, - {name: 'Rhode Island', abbreviation: 'RI'}, - {name: 'South Carolina', abbreviation: 'SC'}, - {name: 'South Dakota', abbreviation: 'SD'}, - {name: 'Tennessee', abbreviation: 'TN'}, - {name: 'Texas', abbreviation: 'TX'}, - {name: 'Utah', abbreviation: 'UT'}, - {name: 'Vermont', abbreviation: 'VT'}, - {name: 'Virginia', abbreviation: 'VA'}, - {name: 'Washington', abbreviation: 'WA'}, - {name: 'West Virginia', abbreviation: 'WV'}, - {name: 'Wisconsin', abbreviation: 'WI'}, - {name: 'Wyoming', abbreviation: 'WY'} - ], - - territories: [ - {name: 'American Samoa', abbreviation: 'AS'}, - {name: 'Federated States of Micronesia', abbreviation: 'FM'}, - {name: 'Guam', abbreviation: 'GU'}, - {name: 'Marshall Islands', abbreviation: 'MH'}, - {name: 'Northern Mariana Islands', abbreviation: 'MP'}, - {name: 'Puerto Rico', abbreviation: 'PR'}, - {name: 'Virgin Islands, U.S.', abbreviation: 'VI'} - ], - - armed_forces: [ - {name: 'Armed Forces Europe', abbreviation: 'AE'}, - {name: 'Armed Forces Pacific', abbreviation: 'AP'}, - {name: 'Armed Forces the Americas', abbreviation: 'AA'} - ], - - street_suffixes: [ - {name: 'Avenue', abbreviation: 'Ave'}, - {name: 'Boulevard', abbreviation: 'Blvd'}, - {name: 'Center', abbreviation: 'Ctr'}, - {name: 'Circle', abbreviation: 'Cir'}, - {name: 'Court', abbreviation: 'Ct'}, - {name: 'Drive', abbreviation: 'Dr'}, - {name: 'Extension', abbreviation: 'Ext'}, - {name: 'Glen', abbreviation: 'Gln'}, - {name: 'Grove', abbreviation: 'Grv'}, - {name: 'Heights', abbreviation: 'Hts'}, - {name: 'Highway', abbreviation: 'Hwy'}, - {name: 'Junction', abbreviation: 'Jct'}, - {name: 'Key', abbreviation: 'Key'}, - {name: 'Lane', abbreviation: 'Ln'}, - {name: 'Loop', abbreviation: 'Loop'}, - {name: 'Manor', abbreviation: 'Mnr'}, - {name: 'Mill', abbreviation: 'Mill'}, - {name: 'Park', abbreviation: 'Park'}, - {name: 'Parkway', abbreviation: 'Pkwy'}, - {name: 'Pass', abbreviation: 'Pass'}, - {name: 'Path', abbreviation: 'Path'}, - {name: 'Pike', abbreviation: 'Pike'}, - {name: 'Place', abbreviation: 'Pl'}, - {name: 'Plaza', abbreviation: 'Plz'}, - {name: 'Point', abbreviation: 'Pt'}, - {name: 'Ridge', abbreviation: 'Rdg'}, - {name: 'River', abbreviation: 'Riv'}, - {name: 'Road', abbreviation: 'Rd'}, - {name: 'Square', abbreviation: 'Sq'}, - {name: 'Street', abbreviation: 'St'}, - {name: 'Terrace', abbreviation: 'Ter'}, - {name: 'Trail', abbreviation: 'Trl'}, - {name: 'Turnpike', abbreviation: 'Tpke'}, - {name: 'View', abbreviation: 'Vw'}, - {name: 'Way', abbreviation: 'Way'} - ], - - months: [ - {name: 'January', short_name: 'Jan', numeric: '01', days: 31}, - // Not messing with leap years... - {name: 'February', short_name: 'Feb', numeric: '02', days: 28}, - {name: 'March', short_name: 'Mar', numeric: '03', days: 31}, - {name: 'April', short_name: 'Apr', numeric: '04', days: 30}, - {name: 'May', short_name: 'May', numeric: '05', days: 31}, - {name: 'June', short_name: 'Jun', numeric: '06', days: 30}, - {name: 'July', short_name: 'Jul', numeric: '07', days: 31}, - {name: 'August', short_name: 'Aug', numeric: '08', days: 31}, - {name: 'September', short_name: 'Sep', numeric: '09', days: 30}, - {name: 'October', short_name: 'Oct', numeric: '10', days: 31}, - {name: 'November', short_name: 'Nov', numeric: '11', days: 30}, - {name: 'December', short_name: 'Dec', numeric: '12', days: 31} - ], - - // http://en.wikipedia.org/wiki/Bank_card_number#Issuer_identification_number_.28IIN.29 - cc_types: [ - {name: "American Express", short_name: 'amex', prefix: '34', length: 15}, - {name: "Bankcard", short_name: 'bankcard', prefix: '5610', length: 16}, - {name: "China UnionPay", short_name: 'chinaunion', prefix: '62', length: 16}, - {name: "Diners Club Carte Blanche", short_name: 'dccarte', prefix: '300', length: 14}, - {name: "Diners Club enRoute", short_name: 'dcenroute', prefix: '2014', length: 15}, - {name: "Diners Club International", short_name: 'dcintl', prefix: '36', length: 14}, - {name: "Diners Club United States & Canada", short_name: 'dcusc', prefix: '54', length: 16}, - {name: "Discover Card", short_name: 'discover', prefix: '6011', length: 16}, - {name: "InstaPayment", short_name: 'instapay', prefix: '637', length: 16}, - {name: "JCB", short_name: 'jcb', prefix: '3528', length: 16}, - {name: "Laser", short_name: 'laser', prefix: '6304', length: 16}, - {name: "Maestro", short_name: 'maestro', prefix: '5018', length: 16}, - {name: "Mastercard", short_name: 'mc', prefix: '51', length: 16}, - {name: "Solo", short_name: 'solo', prefix: '6334', length: 16}, - {name: "Switch", short_name: 'switch', prefix: '4903', length: 16}, - {name: "Visa", short_name: 'visa', prefix: '4', length: 16}, - {name: "Visa Electron", short_name: 'electron', prefix: '4026', length: 16} - ], - - //return all world currency by ISO 4217 - currency_types: [ - {'code' : 'AED', 'name' : 'United Arab Emirates Dirham'}, - {'code' : 'AFN', 'name' : 'Afghanistan Afghani'}, - {'code' : 'ALL', 'name' : 'Albania Lek'}, - {'code' : 'AMD', 'name' : 'Armenia Dram'}, - {'code' : 'ANG', 'name' : 'Netherlands Antilles Guilder'}, - {'code' : 'AOA', 'name' : 'Angola Kwanza'}, - {'code' : 'ARS', 'name' : 'Argentina Peso'}, - {'code' : 'AUD', 'name' : 'Australia Dollar'}, - {'code' : 'AWG', 'name' : 'Aruba Guilder'}, - {'code' : 'AZN', 'name' : 'Azerbaijan New Manat'}, - {'code' : 'BAM', 'name' : 'Bosnia and Herzegovina Convertible Marka'}, - {'code' : 'BBD', 'name' : 'Barbados Dollar'}, - {'code' : 'BDT', 'name' : 'Bangladesh Taka'}, - {'code' : 'BGN', 'name' : 'Bulgaria Lev'}, - {'code' : 'BHD', 'name' : 'Bahrain Dinar'}, - {'code' : 'BIF', 'name' : 'Burundi Franc'}, - {'code' : 'BMD', 'name' : 'Bermuda Dollar'}, - {'code' : 'BND', 'name' : 'Brunei Darussalam Dollar'}, - {'code' : 'BOB', 'name' : 'Bolivia Boliviano'}, - {'code' : 'BRL', 'name' : 'Brazil Real'}, - {'code' : 'BSD', 'name' : 'Bahamas Dollar'}, - {'code' : 'BTN', 'name' : 'Bhutan Ngultrum'}, - {'code' : 'BWP', 'name' : 'Botswana Pula'}, - {'code' : 'BYR', 'name' : 'Belarus Ruble'}, - {'code' : 'BZD', 'name' : 'Belize Dollar'}, - {'code' : 'CAD', 'name' : 'Canada Dollar'}, - {'code' : 'CDF', 'name' : 'Congo/Kinshasa Franc'}, - {'code' : 'CHF', 'name' : 'Switzerland Franc'}, - {'code' : 'CLP', 'name' : 'Chile Peso'}, - {'code' : 'CNY', 'name' : 'China Yuan Renminbi'}, - {'code' : 'COP', 'name' : 'Colombia Peso'}, - {'code' : 'CRC', 'name' : 'Costa Rica Colon'}, - {'code' : 'CUC', 'name' : 'Cuba Convertible Peso'}, - {'code' : 'CUP', 'name' : 'Cuba Peso'}, - {'code' : 'CVE', 'name' : 'Cape Verde Escudo'}, - {'code' : 'CZK', 'name' : 'Czech Republic Koruna'}, - {'code' : 'DJF', 'name' : 'Djibouti Franc'}, - {'code' : 'DKK', 'name' : 'Denmark Krone'}, - {'code' : 'DOP', 'name' : 'Dominican Republic Peso'}, - {'code' : 'DZD', 'name' : 'Algeria Dinar'}, - {'code' : 'EGP', 'name' : 'Egypt Pound'}, - {'code' : 'ERN', 'name' : 'Eritrea Nakfa'}, - {'code' : 'ETB', 'name' : 'Ethiopia Birr'}, - {'code' : 'EUR', 'name' : 'Euro Member Countries'}, - {'code' : 'FJD', 'name' : 'Fiji Dollar'}, - {'code' : 'FKP', 'name' : 'Falkland Islands (Malvinas) Pound'}, - {'code' : 'GBP', 'name' : 'United Kingdom Pound'}, - {'code' : 'GEL', 'name' : 'Georgia Lari'}, - {'code' : 'GGP', 'name' : 'Guernsey Pound'}, - {'code' : 'GHS', 'name' : 'Ghana Cedi'}, - {'code' : 'GIP', 'name' : 'Gibraltar Pound'}, - {'code' : 'GMD', 'name' : 'Gambia Dalasi'}, - {'code' : 'GNF', 'name' : 'Guinea Franc'}, - {'code' : 'GTQ', 'name' : 'Guatemala Quetzal'}, - {'code' : 'GYD', 'name' : 'Guyana Dollar'}, - {'code' : 'HKD', 'name' : 'Hong Kong Dollar'}, - {'code' : 'HNL', 'name' : 'Honduras Lempira'}, - {'code' : 'HRK', 'name' : 'Croatia Kuna'}, - {'code' : 'HTG', 'name' : 'Haiti Gourde'}, - {'code' : 'HUF', 'name' : 'Hungary Forint'}, - {'code' : 'IDR', 'name' : 'Indonesia Rupiah'}, - {'code' : 'ILS', 'name' : 'Israel Shekel'}, - {'code' : 'IMP', 'name' : 'Isle of Man Pound'}, - {'code' : 'INR', 'name' : 'India Rupee'}, - {'code' : 'IQD', 'name' : 'Iraq Dinar'}, - {'code' : 'IRR', 'name' : 'Iran Rial'}, - {'code' : 'ISK', 'name' : 'Iceland Krona'}, - {'code' : 'JEP', 'name' : 'Jersey Pound'}, - {'code' : 'JMD', 'name' : 'Jamaica Dollar'}, - {'code' : 'JOD', 'name' : 'Jordan Dinar'}, - {'code' : 'JPY', 'name' : 'Japan Yen'}, - {'code' : 'KES', 'name' : 'Kenya Shilling'}, - {'code' : 'KGS', 'name' : 'Kyrgyzstan Som'}, - {'code' : 'KHR', 'name' : 'Cambodia Riel'}, - {'code' : 'KMF', 'name' : 'Comoros Franc'}, - {'code' : 'KPW', 'name' : 'Korea (North) Won'}, - {'code' : 'KRW', 'name' : 'Korea (South) Won'}, - {'code' : 'KWD', 'name' : 'Kuwait Dinar'}, - {'code' : 'KYD', 'name' : 'Cayman Islands Dollar'}, - {'code' : 'KZT', 'name' : 'Kazakhstan Tenge'}, - {'code' : 'LAK', 'name' : 'Laos Kip'}, - {'code' : 'LBP', 'name' : 'Lebanon Pound'}, - {'code' : 'LKR', 'name' : 'Sri Lanka Rupee'}, - {'code' : 'LRD', 'name' : 'Liberia Dollar'}, - {'code' : 'LSL', 'name' : 'Lesotho Loti'}, - {'code' : 'LTL', 'name' : 'Lithuania Litas'}, - {'code' : 'LYD', 'name' : 'Libya Dinar'}, - {'code' : 'MAD', 'name' : 'Morocco Dirham'}, - {'code' : 'MDL', 'name' : 'Moldova Leu'}, - {'code' : 'MGA', 'name' : 'Madagascar Ariary'}, - {'code' : 'MKD', 'name' : 'Macedonia Denar'}, - {'code' : 'MMK', 'name' : 'Myanmar (Burma) Kyat'}, - {'code' : 'MNT', 'name' : 'Mongolia Tughrik'}, - {'code' : 'MOP', 'name' : 'Macau Pataca'}, - {'code' : 'MRO', 'name' : 'Mauritania Ouguiya'}, - {'code' : 'MUR', 'name' : 'Mauritius Rupee'}, - {'code' : 'MVR', 'name' : 'Maldives (Maldive Islands) Rufiyaa'}, - {'code' : 'MWK', 'name' : 'Malawi Kwacha'}, - {'code' : 'MXN', 'name' : 'Mexico Peso'}, - {'code' : 'MYR', 'name' : 'Malaysia Ringgit'}, - {'code' : 'MZN', 'name' : 'Mozambique Metical'}, - {'code' : 'NAD', 'name' : 'Namibia Dollar'}, - {'code' : 'NGN', 'name' : 'Nigeria Naira'}, - {'code' : 'NIO', 'name' : 'Nicaragua Cordoba'}, - {'code' : 'NOK', 'name' : 'Norway Krone'}, - {'code' : 'NPR', 'name' : 'Nepal Rupee'}, - {'code' : 'NZD', 'name' : 'New Zealand Dollar'}, - {'code' : 'OMR', 'name' : 'Oman Rial'}, - {'code' : 'PAB', 'name' : 'Panama Balboa'}, - {'code' : 'PEN', 'name' : 'Peru Nuevo Sol'}, - {'code' : 'PGK', 'name' : 'Papua New Guinea Kina'}, - {'code' : 'PHP', 'name' : 'Philippines Peso'}, - {'code' : 'PKR', 'name' : 'Pakistan Rupee'}, - {'code' : 'PLN', 'name' : 'Poland Zloty'}, - {'code' : 'PYG', 'name' : 'Paraguay Guarani'}, - {'code' : 'QAR', 'name' : 'Qatar Riyal'}, - {'code' : 'RON', 'name' : 'Romania New Leu'}, - {'code' : 'RSD', 'name' : 'Serbia Dinar'}, - {'code' : 'RUB', 'name' : 'Russia Ruble'}, - {'code' : 'RWF', 'name' : 'Rwanda Franc'}, - {'code' : 'SAR', 'name' : 'Saudi Arabia Riyal'}, - {'code' : 'SBD', 'name' : 'Solomon Islands Dollar'}, - {'code' : 'SCR', 'name' : 'Seychelles Rupee'}, - {'code' : 'SDG', 'name' : 'Sudan Pound'}, - {'code' : 'SEK', 'name' : 'Sweden Krona'}, - {'code' : 'SGD', 'name' : 'Singapore Dollar'}, - {'code' : 'SHP', 'name' : 'Saint Helena Pound'}, - {'code' : 'SLL', 'name' : 'Sierra Leone Leone'}, - {'code' : 'SOS', 'name' : 'Somalia Shilling'}, - {'code' : 'SPL', 'name' : 'Seborga Luigino'}, - {'code' : 'SRD', 'name' : 'Suriname Dollar'}, - {'code' : 'STD', 'name' : 'São Tomé and Príncipe Dobra'}, - {'code' : 'SVC', 'name' : 'El Salvador Colon'}, - {'code' : 'SYP', 'name' : 'Syria Pound'}, - {'code' : 'SZL', 'name' : 'Swaziland Lilangeni'}, - {'code' : 'THB', 'name' : 'Thailand Baht'}, - {'code' : 'TJS', 'name' : 'Tajikistan Somoni'}, - {'code' : 'TMT', 'name' : 'Turkmenistan Manat'}, - {'code' : 'TND', 'name' : 'Tunisia Dinar'}, - {'code' : 'TOP', 'name' : 'Tonga Pa\'anga'}, - {'code' : 'TRY', 'name' : 'Turkey Lira'}, - {'code' : 'TTD', 'name' : 'Trinidad and Tobago Dollar'}, - {'code' : 'TVD', 'name' : 'Tuvalu Dollar'}, - {'code' : 'TWD', 'name' : 'Taiwan New Dollar'}, - {'code' : 'TZS', 'name' : 'Tanzania Shilling'}, - {'code' : 'UAH', 'name' : 'Ukraine Hryvnia'}, - {'code' : 'UGX', 'name' : 'Uganda Shilling'}, - {'code' : 'USD', 'name' : 'United States Dollar'}, - {'code' : 'UYU', 'name' : 'Uruguay Peso'}, - {'code' : 'UZS', 'name' : 'Uzbekistan Som'}, - {'code' : 'VEF', 'name' : 'Venezuela Bolivar'}, - {'code' : 'VND', 'name' : 'Viet Nam Dong'}, - {'code' : 'VUV', 'name' : 'Vanuatu Vatu'}, - {'code' : 'WST', 'name' : 'Samoa Tala'}, - {'code' : 'XAF', 'name' : 'Communauté Financière Africaine (BEAC) CFA Franc BEAC'}, - {'code' : 'XCD', 'name' : 'East Caribbean Dollar'}, - {'code' : 'XDR', 'name' : 'International Monetary Fund (IMF) Special Drawing Rights'}, - {'code' : 'XOF', 'name' : 'Communauté Financière Africaine (BCEAO) Franc'}, - {'code' : 'XPF', 'name' : 'Comptoirs Français du Pacifique (CFP) Franc'}, - {'code' : 'YER', 'name' : 'Yemen Rial'}, - {'code' : 'ZAR', 'name' : 'South Africa Rand'}, - {'code' : 'ZMW', 'name' : 'Zambia Kwacha'}, - {'code' : 'ZWD', 'name' : 'Zimbabwe Dollar'} - ] - }; - - function copyObject(source, target) { - var key; - - target = target || (Array.isArray(source) ? [] : {}); - - for (key in source) { - if (source.hasOwnProperty(key)) { - target[key] = source[key] || target[key]; - } - } - - return target; - } - - /** Get the data based on key**/ - Chance.prototype.get = function (name) { - return copyObject(data[name]); - }; - - // Mac Address - Chance.prototype.mac_address = function(options){ - // typically mac addresses are separated by ":" - // however they can also be separated by "-" - // the network variant uses a dot every fourth byte - - options = initOptions(options); - if(!options.separator) { - options.separator = options.networkVersion ? "." : ":"; - } - - var mac_pool="ABCDEF1234567890", - mac = ""; - if(!options.networkVersion) { - mac = this.n(this.string, 6, { pool: mac_pool, length:2 }).join(options.separator); - } else { - mac = this.n(this.string, 3, { pool: mac_pool, length:4 }).join(options.separator); - } - - return mac; - }; - - Chance.prototype.normal = function (options) { - options = initOptions(options, {mean : 0, dev : 1}); - - // The Marsaglia Polar method - var s, u, v, norm, - mean = options.mean, - dev = options.dev; - - do { - // U and V are from the uniform distribution on (-1, 1) - u = this.random() * 2 - 1; - v = this.random() * 2 - 1; - - s = u * u + v * v; - } while (s >= 1); - - // Compute the standard normal variate - norm = u * Math.sqrt(-2 * Math.log(s) / s); - - // Shape and scale - return dev * norm + mean; - }; - - Chance.prototype.radio = function (options) { - // Initial Letter (Typically Designated by Side of Mississippi River) - options = initOptions(options, {side : "?"}); - var fl = ""; - switch (options.side.toLowerCase()) { - case "east": - case "e": - fl = "W"; - break; - case "west": - case "w": - fl = "K"; - break; - default: - fl = this.character({pool: "KW"}); - break; - } - - return fl + this.character({alpha: true, casing: "upper"}) + - this.character({alpha: true, casing: "upper"}) + - this.character({alpha: true, casing: "upper"}); - }; - - // Set the data as key and data or the data map - Chance.prototype.set = function (name, values) { - if (typeof name === "string") { - data[name] = values; - } else { - data = copyObject(name, data); - } - }; - - Chance.prototype.tv = function (options) { - return this.radio(options); + Chance.prototype.mersenne_twister = function (seed) { + return new MersenneTwister(seed); }; // -- End Miscellaneous -- - Chance.prototype.mersenne_twister = function (seed) { - return new MersenneTwister(seed); - }; + Chance.prototype.VERSION = "0.5.5"; // Mersenne Twister from https://gist.github.com/banksean/300494 var MersenneTwister = function (seed) {