X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FThesaurus.C;h=12f7a029a9af5fedd0bad00061f4dcd2952d896f;hb=798af7d8f3a34dbad048934819f9da724882d06d;hp=b8e8a7459437a530e17dedf4f6a2b216e4ebac06;hpb=7ea7dabed1b72cc25dcbdc482ac006f2b61dacfd;p=lyx.git diff --git a/src/Thesaurus.C b/src/Thesaurus.C index b8e8a74594..12f7a029a9 100644 --- a/src/Thesaurus.C +++ b/src/Thesaurus.C @@ -1,25 +1,33 @@ /** * \file Thesaurus.C - * Copyright 2001 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * * \author John Levon + * + * Full author contact details are available in file CREDITS. */ #include #include "Thesaurus.h" -#ifdef HAVE_LIBAIKSAURUS +#include "support/lstrings.h" #include - + + +namespace lyx { + +#ifdef HAVE_LIBAIKSAURUS + using std::sort; +using std::string; + Thesaurus::Thesaurus() -{ - aik_ = new Aiksaurus; -} + : aik_(new Aiksaurus) +{} Thesaurus::~Thesaurus() @@ -28,41 +36,48 @@ Thesaurus::~Thesaurus() } -Thesaurus::Meanings Thesaurus::lookup(string const & text) +Thesaurus::Meanings Thesaurus::lookup(docstring const & t) { Meanings meanings; + // aiksaurus is for english text only, therefore it does not work + // with non-ascii strings. + // The interface of the Thesaurus class uses docstring because a + // non-english thesaurus is possible in theory. + if (!support::isAscii(t)) + // to_ascii() would assert + return meanings; + + string const text = to_ascii(t); if (!aik_->find(text.c_str())) return meanings; // weird api, but ... - + int prev_meaning = -1; int cur_meaning; - string meaning; + docstring meaning; - // correct, returns "" at the end + // correct, returns "" at the end string ret = aik_->next(cur_meaning); - + while (!ret.empty()) { if (cur_meaning != prev_meaning) { - meaning = ret; + meaning = from_ascii(ret); ret = aik_->next(cur_meaning); prev_meaning = cur_meaning; } else { - if (ret != text) { - meanings[meaning].push_back(ret); - } + if (ret != text) + meanings[meaning].push_back(from_ascii(ret)); } - + ret = aik_->next(cur_meaning); } for (Meanings::iterator it = meanings.begin(); - it != meanings.end(); ++it) { - sort(it->second.begin(), it->second.end()); - } - + it != meanings.end(); ++it) + sort(it->second.begin(), it->second.end()); + return meanings; } @@ -71,14 +86,14 @@ Thesaurus::Meanings Thesaurus::lookup(string const & text) Thesaurus::Thesaurus() { } - - + + Thesaurus::~Thesaurus() { } - -Thesaurus::Meanings Thesaurus::lookup(string const &) + +Thesaurus::Meanings Thesaurus::lookup(docstring const &) { return Meanings(); } @@ -86,4 +101,7 @@ Thesaurus::Meanings Thesaurus::lookup(string const &) #endif // HAVE_LIBAIKSAURUS // Global instance -Thesaurus thesaurus; +Thesaurus thesaurus; + + +} // namespace lyx