Added simple spell chacking using difflib

This commit is contained in:
Veronica K. B. Olsen
2019-11-05 23:22:53 +01:00
parent d61e7a6ae6
commit b4dd1d1a9e
3 changed files with 69 additions and 4 deletions
+5 -4
View File
@@ -51,9 +51,10 @@ class Config:
self.appPath = None self.appPath = None
self.appRoot = None self.appRoot = None
self.appIcon = None self.appIcon = None
self.guiPath = None self.assetPath = None
self.themeRoot = None self.themeRoot = None
self.themePath = None self.graphPath = None
self.dictPath = None
# Set default values # Set default values
self.confChanged = False self.confChanged = False
@@ -165,10 +166,10 @@ class Config:
self.lastPath = self.homePath self.lastPath = self.homePath
self.appPath = getattr(sys, "_MEIPASS", path.abspath(path.dirname(__file__))) self.appPath = getattr(sys, "_MEIPASS", path.abspath(path.dirname(__file__)))
self.appRoot = path.join(self.appPath,path.pardir) self.appRoot = path.join(self.appPath,path.pardir)
self.helpPath = path.join(self.appRoot,"help","en_GB") self.assetPath = path.join(self.appPath,"assets")
self.guiPath = path.join(self.appPath,"gui")
self.themeRoot = path.join(self.appPath,"themes") self.themeRoot = path.join(self.appPath,"themes")
self.graphPath = path.join(self.appPath,"graphics") self.graphPath = path.join(self.appPath,"graphics")
self.dictPath = path.join(self.assetPath,"dict")
self.appIcon = path.join(self.graphPath, nwFiles.APP_ICON) self.appIcon = path.join(self.graphPath, nwFiles.APP_ICON)
# If config folder does not exist, make it. # If config folder does not exist, make it.
+2
View File
@@ -4,6 +4,7 @@ from nw.tools.analyse import TextAnalysis
from nw.tools.optlaststate import OptLastState from nw.tools.optlaststate import OptLastState
from nw.tools.spellcheck import NWSpellCheck from nw.tools.spellcheck import NWSpellCheck
from nw.tools.spellenchant import NWSpellEnchant from nw.tools.spellenchant import NWSpellEnchant
from nw.tools.spellsimple import NWSpellSimple
from nw.tools.translate import numberToWord from nw.tools.translate import numberToWord
from nw.tools.wordcount import countWords from nw.tools.wordcount import countWords
@@ -12,6 +13,7 @@ __all__ = [
"OptLastState", "OptLastState",
"NWSpellCheck", "NWSpellCheck",
"NWSpellEnchant", "NWSpellEnchant",
"NWSpellSimple",
"numberToWord", "numberToWord",
"countWords", "countWords",
] ]
+62
View File
@@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
"""novelWriter Spell Check Simple
novelWriter Spell Check Simple
==================================
Simple Python3 spell checker based on difflib
File History:
Created: 2019-06-11 [0.1.5]
"""
import logging
import nw
from os import path
from collections import Counter
from difflib import get_close_matches
logger = logging.getLogger(__name__)
from nw.tools.spellcheck import NWSpellCheck
class NWSpellSimple(NWSpellCheck):
WORDS = []
def __init__(self):
NWSpellCheck.__init__(self)
self.mainConf = nw.CONFIG
logger.debug("Norvig spell checking activated")
return
def setLanguage(self, theLang, projectDict=None):
dictFile = path.join(self.mainConf.dictPath,theLang+".dict")
try:
with open(dictFile,mode="r",encoding="utf-8") as wordsFile:
for theLine in wordsFile:
if len(theLine) == 0 or theLine.startswith("#"):
continue
self.WORDS.append(theLine.strip().lower())
logger.debug("Spell check word list for language %s loaded" % theLang)
logger.debug("Word list contains %d words" % len(self.WORDS))
except Exception as e:
logger.error("Failed to load spell check word list for language %s" % theLang)
logger.error(str(e))
return
def checkWord(self, theWord):
theWord = theWord.replace(self.mainConf.fmtSingleQuotes[1],"'").lower()
return theWord in self.WORDS
def suggestWords(self, theWord):
return get_close_matches(theWord.lower(), self.WORDS, n=10, cutoff=0.60)
def addWord(self, newWord):
return
def listDictionaries(self):
return ["default"]
# END Class NWSpellSimple