/*
 * 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

}