]> git.lyx.org Git - lyx.git/blobdiff - src/Thesaurus.C
* src/text3.C (doDispatch):
[lyx.git] / src / Thesaurus.C
index ebfd3bda35a0b761879c557659357c4aeee8ff4e..12f7a029a9af5fedd0bad00061f4dcd2952d896f 100644 (file)
@@ -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 <config.h>
 
 #include "Thesaurus.h"
 
-#ifdef HAVE_LIBAIKSAURUS
+#include "support/lstrings.h"
 
 #include <algorithm>
 
+
+namespace lyx {
+
+#ifdef HAVE_LIBAIKSAURUS
+
 using std::sort;
+using std::string;
+
 
 Thesaurus::Thesaurus()
-{
-       aik_ = new Aiksaurus;
-}
+       : aik_(new Aiksaurus)
+{}
 
 
 Thesaurus::~Thesaurus()
@@ -28,10 +36,19 @@ 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;
 
@@ -39,29 +56,27 @@ Thesaurus::Meanings Thesaurus::lookup(string const & text)
 
        int prev_meaning = -1;
        int cur_meaning;
-       string meaning;
+       docstring meaning;
 
        // 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;
 }
@@ -78,7 +93,7 @@ Thesaurus::~Thesaurus()
 }
 
 
-Thesaurus::Meanings Thesaurus::lookup(string const &)
+Thesaurus::Meanings Thesaurus::lookup(docstring const &)
 {
        return Meanings();
 }
@@ -87,3 +102,6 @@ Thesaurus::Meanings Thesaurus::lookup(string const &)
 
 // Global instance
 Thesaurus thesaurus;
+
+
+} // namespace lyx