From af56ffbbb362d5e33b0c3c27a9cf9ce57605b920 Mon Sep 17 00:00:00 2001 From: Ceda EI Date: Thu, 23 Apr 2020 20:30:19 +0530 Subject: [PATCH] Build dict for /expand. Replace multiple spaces with single space. --- commands/expand.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/commands/expand.js b/commands/expand.js index a9592c6..2165a38 100644 --- a/commands/expand.js +++ b/commands/expand.js @@ -1,15 +1,28 @@ function expand(words, text) { const letters = text.trim().toLowerCase().split(""); + // Build a dictionary with lowercase letters as keys + const dict = {}; + words.forEach(word => { + + if (word == "") + return; + const initial = word.split("")[0].toLowerCase(); + if (initial in dict) + dict[initial].push(word); + else + dict[initial] = [word]; + + }); return letters.map((letter) => { - const wordsWithLetter = words.filter(i => i.match(RegExp(`^${letter}`, "i"))); - if (! wordsWithLetter.length) + if (!(letter.toLowerCase() in dict)) return letter; + const wordsWithLetter = dict[letter.toLowerCase()]; const word = wordsWithLetter[Math.floor(Math.random() * wordsWithLetter.length)]; return word; - }).reduce((acc, cur) => acc + " " + cur); + }).reduce((acc, cur) => acc + " " + cur).replace(/\s{2,}/, " "); }