diff --git a/README.md b/README.md index e3f58a3..4e14e0a 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,9 @@ var i; for (i = 0; i < 100; i += 1) { console.log(hri.random()); } + +// Use custom pattern of number-noun-adjective +console.log(hri.get('#na')); ``` ### bower / browser diff --git a/index.js b/index.js index ab07355..4595a64 100644 --- a/index.js +++ b/index.js @@ -7,11 +7,11 @@ , animals = [] , adjectives = [] , numbers = [] - ; + ; function genNumbers() { var i = 2 - ; + ; numbers = []; numbers.push(0); @@ -23,7 +23,7 @@ return shuffle(numbers); } - function random() { + function populate() { if (!adjectives.length) { adjectives = shuffle(lists.adjectives.slice(0)); } @@ -33,14 +33,40 @@ if (!numbers.length) { numbers = shuffle(genNumbers()); } + } + function random() { + populate(); return adjectives.pop() + '-' + animals.pop() + '-' + numbers.pop() ; } - exports.humanReadableIds = { random: random }; + // Accepts a format as a stirng of 'a' for adjective, 'n' for noun, and '#' for number + function get(format) { + populate(); + let hri = []; + for (let item of format) { + switch (item) { + case 'a': + hri.push(adjectives.pop()); + break; + case 'n': + hri.push(animals.pop()); + break; + case '#': + hri.push(numbers.pop()); + break; + default: + throw 'Unexpected value ' + item + '. Expected a,n,#'; + } + } + + return hri.join('-'); + } + + exports.humanReadableIds = {random: random, get: get}; exports.hri = exports.humanReadableIds; }('undefined' !== typeof exports && exports || new Function('return this')())); diff --git a/tests/run-in-node.js b/tests/run-in-node.js index a8eb4c1..8ef6063 100644 --- a/tests/run-in-node.js +++ b/tests/run-in-node.js @@ -9,4 +9,8 @@ for (i = 0; i < 100; i += 1) { console.log(hri.random()); } + + for (i = 0; i < 10; i += 1) { + console.log(hri.get('#na')); + } }('undefined' !== typeof exports && exports || new Function('return this')()));