summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'SwifTools/SpellCheckerFactory.cpp')
-rw-r--r--SwifTools/SpellCheckerFactory.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/SwifTools/SpellCheckerFactory.cpp b/SwifTools/SpellCheckerFactory.cpp
new file mode 100644
index 0000000..428e1a5
--- /dev/null
+++ b/SwifTools/SpellCheckerFactory.cpp
@@ -0,0 +1,41 @@
+/*
+ * 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() {
+}
+
+#ifdef HAVE_HUNSPELL
+SpellChecker* SpellCheckerFactory::createSpellChecker(const std::string& dictFile) {
+ 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
+ return NULL;
+}
+#elif defined(SWIFTEN_PLATFORM_MACOSX)
+SpellChecker* SpellCheckerFactory::createSpellChecker(const std::string& /*dictFile*/) {
+ return new MacOSXChecker();
+}
+#endif
+
+}