mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-11 03:03:06 +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 {
|
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
|
#ifdef HAVE_LIBMYTHES
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -272,7 +199,80 @@ Thesaurus::Meanings Thesaurus::lookup(docstring const & t, docstring const & lan
|
|||||||
return meanings;
|
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
|
struct Thesaurus::Private
|
||||||
{
|
{
|
||||||
@ -290,8 +290,8 @@ bool Thesaurus::thesaurusAvailable(docstring const &) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // HAVE_LIBMYTHES
|
|
||||||
#endif // HAVE_LIBAIKSAURUS
|
#endif // HAVE_LIBAIKSAURUS
|
||||||
|
#endif // HAVE_LIBMYTHES
|
||||||
|
|
||||||
Thesaurus::Thesaurus() : d(new Thesaurus::Private)
|
Thesaurus::Thesaurus() : d(new Thesaurus::Private)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user