rastgelekelime
Version:
Bir yada daha fazla Türkçe kelime çıktısı alın.
88 lines (70 loc) • 2 kB
JavaScript
var wordList = require('./data/wordList.json');
function words(options) {
function word() {
if (options && options.maxLength > 1) {
return generateWordWithMaxLength();
} else {
return generateRandomWord();
}
}
function generateWordWithMaxLength() {
var rightSize = false;
var wordUsed;
while (!rightSize) {
wordUsed = generateRandomWord();
if(wordUsed.length <= options.maxLength) {
rightSize = true;
}
}
return wordUsed;
}
function generateRandomWord() {
return wordList[randInt(wordList.length)];
}
function randInt(lessThan) {
return Math.floor(Math.random() * lessThan);
}
if (typeof(options) === 'undefined') {
return word();
}
if (typeof(options) === 'number') {
options = { exactly: options };
}
if (options.exactly) {
options.min = options.exactly;
options.max = options.exactly;
}
if (typeof(options.wordsPerString) !== 'number') {
options.wordsPerString = 1;
}
if (typeof(options.formatter) !== 'function') {
options.formatter = (word) => word;
}
if (typeof(options.separator) !== 'string') {
options.separator = ' ';
}
var total = options.min + randInt(options.max + 1 - options.min);
var results = [];
var token = '';
var relativeIndex = 0;
for (var i = 0; (i < total * options.wordsPerString); i++) {
if (relativeIndex === options.wordsPerString - 1) {
token += options.formatter(word(), relativeIndex);
}
else {
token += options.formatter(word(), relativeIndex) + options.separator;
}
relativeIndex++;
if ((i + 1) % options.wordsPerString === 0) {
results.push(token);
token = '';
relativeIndex = 0;
}
}
if (typeof options.join === 'string') {
results = results.join(options.join);
}
return results;
}
module.exports = words;
words.wordList = wordList;