]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - src/js/index.js
Words not in list show error with suggestion
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / src / js / index.js
index 6f0da65d391a29e58f3dcdc597fc3511039b7e40..f3582b0f17461de4de8ce9d8c37038be0ea2bcc0 100644 (file)
                 proper.push(part.toLowerCase());
             }
         }
-        // TODO some levenstein on the words
         var properPhrase = proper.join(' ');
+        // Check each word
+        for (var i=0; i<proper.length; i++) {
+            var word = proper[i];
+            if (WORDLISTS["english"].indexOf(word) == -1) {
+                console.log("Finding closest match to " + word);
+                var nearestWord = findNearestWord(word);
+                return word + " not in wordlist, did you mean " + nearestWord + "?";
+            }
+        }
         // Check the words are valid
         var isValid = mnemonic.check(properPhrase);
         if (!isValid) {
             .show();
     }
 
+    function findNearestWord(word) {
+        var words = WORDLISTS["english"];
+        var minDistance = 99;
+        var closestWord = words[0];
+        for (var i=0; i<words.length; i++) {
+            var comparedTo = words[i];
+            var distance = Levenshtein.get(word, comparedTo);
+            if (distance < minDistance) {
+                closestWord = comparedTo;
+                minDistance = distance;
+            }
+        }
+        return closestWord;
+    }
+
     function hidePending() {
         DOM.feedback
             .text("")