mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-23 05:25:26 +00:00
compile fix (and move MyThes to firt place, since it is the preferred lib).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29470 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
c18baee469
commit
59b58c5c0a
@ -42,79 +42,6 @@ using namespace lyx::support::os;
|
||||
|
||||
namespace lyx {
|
||||
|
||||
#ifdef HAVE_LIBAIKSAURUS
|
||||
|
||||
struct Thesaurus::Private
|
||||
{
|
||||
Private(): thes_(new Aiksaurus) {}
|
||||
Aiksaurus * thes_;
|
||||
};
|
||||
|
||||
Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const &)
|
||||
{
|
||||
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);
|
||||
|
||||
docstring error = from_ascii(d->thes_->error());
|
||||
if (!error.empty()) {
|
||||
static bool sent_error = false;
|
||||
if (!sent_error) {
|
||||
frontend::Alert::error(_("Thesaurus failure"),
|
||||
bformat(_("Aiksaurus returned the following error:\n\n%1$s."),
|
||||
error));
|
||||
sent_error = true;
|
||||
}
|
||||
return meanings;
|
||||
}
|
||||
if (!d->thes_->find(text.c_str()))
|
||||
return meanings;
|
||||
|
||||
// weird api, but ...
|
||||
|
||||
int prev_meaning = -1;
|
||||
int cur_meaning;
|
||||
docstring meaning;
|
||||
|
||||
// correct, returns "" at the end
|
||||
string ret = d->thes_->next(cur_meaning);
|
||||
|
||||
while (!ret.empty()) {
|
||||
if (cur_meaning != prev_meaning) {
|
||||
meaning = from_ascii(ret);
|
||||
ret = d->thes_->next(cur_meaning);
|
||||
prev_meaning = cur_meaning;
|
||||
} else {
|
||||
if (ret != text)
|
||||
meanings[meaning].push_back(from_ascii(ret));
|
||||
}
|
||||
|
||||
ret = d->thes_->next(cur_meaning);
|
||||
}
|
||||
|
||||
for (Meanings::iterator it = meanings.begin();
|
||||
it != meanings.end(); ++it)
|
||||
sort(it->second.begin(), it->second.end());
|
||||
|
||||
return meanings;
|
||||
}
|
||||
|
||||
|
||||
bool Thesaurus::thesaurusAvailable(docstring const & lang) const
|
||||
{
|
||||
// we support English only
|
||||
return prefixIs(lang, from_ascii("en_"));
|
||||
}
|
||||
|
||||
#else // HAVE_LIBAIKSAURUS
|
||||
#ifdef HAVE_LIBMYTHES
|
||||
|
||||
namespace {
|
||||
@ -272,7 +199,80 @@ Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const & lan
|
||||
return meanings;
|
||||
}
|
||||
|
||||
#else
|
||||
#else // HAVE_LIBMYTHES
|
||||
#ifdef HAVE_LIBAIKSAURUS
|
||||
|
||||
struct Thesaurus::Private
|
||||
{
|
||||
Private(): thes_(new Aiksaurus) {}
|
||||
Aiksaurus * thes_;
|
||||
};
|
||||
|
||||
Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const &)
|
||||
{
|
||||
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);
|
||||
|
||||
docstring error = from_ascii(d->thes_->error());
|
||||
if (!error.empty()) {
|
||||
static bool sent_error = false;
|
||||
if (!sent_error) {
|
||||
frontend::Alert::error(_("Thesaurus failure"),
|
||||
bformat(_("Aiksaurus returned the following error:\n\n%1$s."),
|
||||
error));
|
||||
sent_error = true;
|
||||
}
|
||||
return meanings;
|
||||
}
|
||||
if (!d->thes_->find(text.c_str()))
|
||||
return meanings;
|
||||
|
||||
// weird api, but ...
|
||||
|
||||
int prev_meaning = -1;
|
||||
int cur_meaning;
|
||||
docstring meaning;
|
||||
|
||||
// correct, returns "" at the end
|
||||
string ret = d->thes_->next(cur_meaning);
|
||||
|
||||
while (!ret.empty()) {
|
||||
if (cur_meaning != prev_meaning) {
|
||||
meaning = from_ascii(ret);
|
||||
ret = d->thes_->next(cur_meaning);
|
||||
prev_meaning = cur_meaning;
|
||||
} else {
|
||||
if (ret != text)
|
||||
meanings[meaning].push_back(from_ascii(ret));
|
||||
}
|
||||
|
||||
ret = d->thes_->next(cur_meaning);
|
||||
}
|
||||
|
||||
for (Meanings::iterator it = meanings.begin();
|
||||
it != meanings.end(); ++it)
|
||||
sort(it->second.begin(), it->second.end());
|
||||
|
||||
return meanings;
|
||||
}
|
||||
|
||||
|
||||
bool Thesaurus::thesaurusAvailable(docstring const & lang) const
|
||||
{
|
||||
// we support English only
|
||||
return prefixIs(lang, from_ascii("en_"));
|
||||
}
|
||||
|
||||
#else // HAVE_LIBAIKSAURUS
|
||||
|
||||
struct Thesaurus::Private
|
||||
{
|
||||
@ -290,8 +290,8 @@ bool Thesaurus::thesaurusAvailable(docstring const &) const
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif // HAVE_LIBMYTHES
|
||||
#endif // HAVE_LIBAIKSAURUS
|
||||
#endif // HAVE_LIBMYTHES
|
||||
|
||||
Thesaurus::Thesaurus() : d(new Thesaurus::Private)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user