as-services/libs/utils/words-id/autocorrect.js

38 lines
954 B
JavaScript

const { snakeCase, capitalize } = require("lodash")
const BKNodePhonetic = require("./autocorrect/BKNodePhonetic")
const frWordlist = require("./wordlists/fr.json")
const frWordsNode = new BKNodePhonetic(frWordlist[0])
frWordlist.slice(1).forEach((word) => frWordsNode.insert(word))
const wordsNode = frWordsNode
const wordlist = frWordlist
function wordsAutocorrect(words) {
if (typeof words === "string") {
words = snakeCase(words).split("_")
}
words = words.map((word) => {
if (wordlist.includes(word)) {
return word
}
const searchResult = wordsNode.search(word, null, 2)
if (searchResult) {
return searchResult.word
}
return null
})
if (words.some((w) => !w)) {
return false
}
return words.map(capitalize).join("")
}
module.exports = wordsAutocorrect
// console.log(
// ["AbaiserAbrupteChato", "AcuseAssierAssiduler", "AbisalAboutyrAbollier"].map(
// wordsAutocorrect
// )
// )