]> git.lyx.org Git - lyx.git/blobdiff - src/lyxlex.C
Patch from John (figinset) and Dekel (RTL and spellchecker)
[lyx.git] / src / lyxlex.C
index 8fe4b94be4dbf6dd5459a35f1d32e643f6c3054d..4b93787423c7685d12ba833372bd9cd52e37b25c 100644 (file)
@@ -20,6 +20,7 @@
 #include "lyxlex.h"
 #include "lyxlex_pimpl.h"
 #include "support/filetools.h"
+#include "support/lstrings.h"
 
 using std::ostream;
 using std::istream;
@@ -55,7 +56,7 @@ int LyXLex::GetLineNo() const
 }
 
 
-char const * const LyXLex::text() const
+string const LyXLex::text() const
 {
        return &pimpl_->buff[0];
 }
@@ -103,6 +104,11 @@ void LyXLex::setStream(istream & i)
 }
 
 
+void LyXLex::setCommentChar(char c)
+{
+       pimpl_->setCommentChar(c);
+}
+
 int LyXLex::lex()
 {
        return pimpl_->lex();
@@ -111,8 +117,8 @@ int LyXLex::lex()
 
 int LyXLex::GetInteger() const
 {
-       if (pimpl_->buff[0] > ' ')   
-               return atoi(pimpl_->buff);
+       if (isStrInt(pimpl_->GetString()))
+               return strToInt(pimpl_->GetString());
        else {
                pimpl_->printError("Bad integer `$$Token'");
                return -1;
@@ -122,12 +128,16 @@ int LyXLex::GetInteger() const
 
 float LyXLex::GetFloat() const
 {
-   if (pimpl_->buff[0] > ' ')
-       return atof(pimpl_->buff);
-   else {
-       pimpl_->printError("Bad float `$$Token'");
-       return -1;
-   }
+       // replace comma with dot in case the file was written with
+       // the wrong locale (should be rare, but is easy enough to
+       // avoid). 
+       string str = subst(pimpl_->GetString(), ",", ".");
+       if (isStrDbl(str))
+               return strToDbl(str);
+       else {
+               pimpl_->printError("Bad float `$$Token'");
+               return -1;
+       }
 }
 
 
@@ -172,7 +182,7 @@ string const LyXLex::getLongString(string const & endtoken)
                        } 
 
                        if (!prefix.empty() 
-                           && prefixIs(tmpstr, prefix.c_str())) {
+                           && prefixIs(tmpstr, prefix)) {
                                tmpstr.erase(0, prefix.length() - 1);
                        }
                        str += frontStrip(tmpstr, "\t") + '\n';