summaryrefslogtreecommitdiffstats
blob: d068d9075a23daf13462cc687bae6a8d5db379a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 * Copyright (c) 2011 Vlad Voicu
 * Licensed under the Simplified BSD license.
 * See Documentation/Licenses/BSD-simplified.txt for more information.
 */

#include <boost/filesystem/operations.hpp>

#include <SwifTools/SpellChecker.h>
#include <SwifTools/HunspellChecker.h>
#include <SwifTools/SpellCheckerFactory.h>
#include <Swiften/Base/Platform.h>

#ifdef HAVE_HUNSPELL
#include <hunspell/hunspell.hxx>
#elif defined(SWIFTEN_PLATFORM_MACOSX)
#include <SwifTools/MacOSXChecker.h>
#endif

namespace Swift {

SpellCheckerFactory::SpellCheckerFactory() {
}

SpellChecker* SpellCheckerFactory::createSpellChecker(const std::string& dictFile) {
#ifdef HAVE_HUNSPELL
	std::string affixFile(dictFile);
	boost::replace_all(affixFile, ".dic", ".aff");
	if ((boost::filesystem::exists(dictFile)) && (boost::filesystem::exists(affixFile))) {
		return new HunspellChecker(affixFile.c_str(), dictFile.c_str());
	}
	// If dictionaries don't exist disable the checker
#elif defined(SWIFTEN_PLATFORM_MACOSX)
	return new MacOSXChecker();
#endif
	return NULL;
}

}