public SpellCheckWordLists(string dictionaryFolder, string languageName, IDoSpell doSpell) { _dictionaryFolder = dictionaryFolder ?? throw new NullReferenceException(nameof(dictionaryFolder)); _languageName = languageName ?? throw new NullReferenceException(nameof(languageName)); _doSpell = doSpell ?? throw new NullReferenceException(nameof(doSpell)); _nameList = new NameList(Configuration.DictionariesDirectory, languageName, Configuration.Settings.WordLists.UseOnlineNames, Configuration.Settings.WordLists.NamesUrl); _names = _nameList.GetNames(); var namesMultiWordList = _nameList.GetMultiNames(); if (Configuration.Settings.Tools.RememberUseAlwaysList) { LoadUseAlwaysList(); } foreach (string namesItem in _names) { _namesListUppercase.Add(namesItem.ToUpperInvariant()); } if (languageName.StartsWith("en_", StringComparison.OrdinalIgnoreCase)) { foreach (string namesItem in _names) { if (!namesItem.EndsWith('s')) { _namesListWithApostrophe.Add(namesItem + "'s"); _namesListWithApostrophe.Add(namesItem + "’s"); } else if (!namesItem.EndsWith('\'')) { _namesListWithApostrophe.Add(namesItem + "'"); } } } if (File.Exists(dictionaryFolder + languageName + "_user.xml")) { var userWordDictionary = new XmlDocument(); userWordDictionary.Load(dictionaryFolder + languageName + "_user.xml"); var xmlNodeList = userWordDictionary.DocumentElement?.SelectNodes("word"); if (xmlNodeList != null) { foreach (XmlNode node in xmlNodeList) { string word = node.InnerText.Trim().ToLowerInvariant(); if (word.Contains(' ')) { _userPhraseList.Add(word); } else { _userWordList.Add(word); } } } } // Add names/userdic with "." or " " or "-" foreach (var word in namesMultiWordList) { if (word.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(word); } } foreach (string name in _names) { if (name.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(name); } } foreach (string word in _userWordList) { if (word.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(word); } } foreach (var phrase in _userPhraseList) { if (phrase.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(phrase); } } }
public SpellCheckWordLists(string dictionaryFolder, string languageName, IDoSpell doSpell) { if (languageName == null) throw new NullReferenceException("languageName"); if (doSpell == null) throw new NullReferenceException("doSpell"); _languageName = languageName; _doSpell = doSpell; _namesList = new NamesList(Configuration.DictionariesFolder, languageName, Configuration.Settings.WordLists.UseOnlineNamesEtc, Configuration.Settings.WordLists.NamesEtcUrl); _namesEtcList = _namesList.GetNames(); var namesEtcMultiWordList = _namesList.GetMultiNames(); foreach (string namesItem in _namesEtcList) _namesEtcListUppercase.Add(namesItem.ToUpper()); if (languageName.StartsWith("en_", StringComparison.OrdinalIgnoreCase)) { foreach (string namesItem in _namesEtcList) { if (!namesItem.EndsWith('s')) { _namesEtcListWithApostrophe.Add(namesItem + "'s"); _namesEtcListWithApostrophe.Add(namesItem + "’s"); } else if (!namesItem.EndsWith('\'')) { _namesEtcListWithApostrophe.Add(namesItem + "'"); } } } _userWordList = new List<string>(); _userPhraseList = new List<string>(); if (File.Exists(dictionaryFolder + languageName + "_user.xml")) { var userWordDictionary = new XmlDocument(); userWordDictionary.Load(dictionaryFolder + languageName + "_user.xml"); if (userWordDictionary.DocumentElement != null) { var xmlNodeList = userWordDictionary.DocumentElement.SelectNodes("word"); if (xmlNodeList != null) { foreach (XmlNode node in xmlNodeList) { string word = node.InnerText.Trim().ToLower(); if (word.Contains(' ')) _userPhraseList.Add(word); else _userWordList.Add(word); } } } } // Add names/userdic with "." or " " or "-" _wordsWithDashesOrPeriods = new List<string>(); _wordsWithDashesOrPeriods.AddRange(namesEtcMultiWordList); foreach (string name in _namesEtcList) { if (name.Contains(PeriodAndDash)) _wordsWithDashesOrPeriods.Add(name); } foreach (string word in _userWordList) { if (word.Contains(PeriodAndDash)) _wordsWithDashesOrPeriods.Add(word); } _wordsWithDashesOrPeriods.AddRange(_userPhraseList); }
public SpellCheckWordLists(string dictionaryFolder, string languageName, IDoSpell doSpell) { if (languageName == null) { throw new NullReferenceException("languageName"); } if (doSpell == null) { throw new NullReferenceException("doSpell"); } _languageName = languageName; _doSpell = doSpell; _namesList = new NamesList(Configuration.DictionariesFolder, languageName, Configuration.Settings.WordLists.UseOnlineNamesEtc, Configuration.Settings.WordLists.NamesEtcUrl); _namesEtcList = _namesList.GetNames(); var namesEtcMultiWordList = _namesList.GetMultiNames(); foreach (string namesItem in _namesEtcList) { _namesEtcListUppercase.Add(namesItem.ToUpper()); } if (languageName.StartsWith("en_", StringComparison.OrdinalIgnoreCase)) { foreach (string namesItem in _namesEtcList) { if (!namesItem.EndsWith('s')) { _namesEtcListWithApostrophe.Add(namesItem + "'s"); _namesEtcListWithApostrophe.Add(namesItem + "’s"); } else if (!namesItem.EndsWith('\'')) { _namesEtcListWithApostrophe.Add(namesItem + "'"); } } } _userWordList = new List <string>(); _userPhraseList = new List <string>(); if (File.Exists(dictionaryFolder + languageName + "_user.xml")) { var userWordDictionary = new XmlDocument(); userWordDictionary.Load(dictionaryFolder + languageName + "_user.xml"); if (userWordDictionary.DocumentElement != null) { var xmlNodeList = userWordDictionary.DocumentElement.SelectNodes("word"); if (xmlNodeList != null) { foreach (XmlNode node in xmlNodeList) { string word = node.InnerText.Trim().ToLower(); if (word.Contains(' ')) { _userPhraseList.Add(word); } else { _userWordList.Add(word); } } } } } // Add names/userdic with "." or " " or "-" _wordsWithDashesOrPeriods = new List <string>(); _wordsWithDashesOrPeriods.AddRange(namesEtcMultiWordList); foreach (string name in _namesEtcList) { if (name.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(name); } } foreach (string word in _userWordList) { if (word.Contains(PeriodAndDash)) { _wordsWithDashesOrPeriods.Add(word); } } _wordsWithDashesOrPeriods.AddRange(_userPhraseList); }