typedef map<std::string, Hunspell *> Spellers;
typedef map<std::string, PersonalWordList *> LangPersonalWordList;
-typedef vector<WordLangTuple> IgnoreList;
-
docstring remap_result(docstring const & s)
{
// substitute RIGHT SINGLE QUOTATION MARK
Hunspell * speller(Language const * lang);
Hunspell * lookup(Language const * lang);
/// ignored words
- bool isIgnored(WordLangTuple const & wl,
- std::vector<WordLangTuple> const & docdict) const;
+ bool isIgnored(WordLangTuple const & wl) const;
/// personal word list interface
void remove(WordLangTuple const & wl);
void insert(WordLangTuple const & wl);
/// the spellers
Spellers spellers_;
///
- IgnoreList ignored_;
+ WordLangTable ignored_;
///
LangPersonalWordList personal_;
///
}
-bool HunspellChecker::Private::isIgnored(WordLangTuple const & wl,
- vector<WordLangTuple> const & docdict) const
+bool HunspellChecker::Private::isIgnored(WordLangTuple const & wl) const
{
- IgnoreList::const_iterator it = ignored_.begin();
+ WordLangTable::const_iterator it = ignored_.begin();
for (; it != ignored_.end(); ++it) {
if (it->lang()->code() != wl.lang()->code())
continue;
if (it->word() == wl.word())
return true;
}
- it = docdict.begin();
- for (; it != docdict.end(); ++it) {
- if (it->lang()->code() != wl.lang()->code())
- continue;
- if (it->word() == wl.word())
- return true;
- }
return false;
}
SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl,
vector<WordLangTuple> const & docdict)
{
- if (d->isIgnored(wl, docdict))
+ if (d->isIgnored(wl))
return WORD_OK;
+ WordLangTable::const_iterator it = docdict.begin();
+ for (; it != docdict.end(); ++it) {
+ if (it->lang()->code() != wl.lang()->code())
+ continue;
+ if (it->word() == wl.word())
+ return DOCUMENT_LEARNED_WORD;
+ }
+
Hunspell * h = d->speller(wl.lang());
if (!h)
return NO_DICTIONARY;