}
};
-} // end of anon namespace
+} // namespace
Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num)
bool Lexer::Pimpl::setFile(FileName const & filename)
{
// Check the format of the file.
- if (formats.isZippedFile(filename)) {
+ if (theFormats().isZippedFile(filename)) {
LYXERR(Debug::LYXLEX, "lyxlex: compressed");
// The check only outputs a debug message, because it triggers
// a bug in compaq cxx 6.2, where is_open() returns 'true' for
// I would prefer to give a tag number instead of an explicit token
// here, but it is not possible because Buffer::readDocument uses
// explicit tokens (JMarc)
-string const Lexer::getLongString(string const & endtoken)
+docstring Lexer::getLongString(docstring const & endtoken)
{
- string str;
- string prefix;
+ docstring str;
+ docstring prefix;
bool firstline = true;
while (pimpl_->is) { //< eatLine only reads from is, not from pushTok
if (!eatLine())
// blank line in the file being read
continue;
+ docstring tmpstr = getDocString();
+ docstring const token = trim(tmpstr, " \t");
- string const token = trim(getString(), " \t");
-
- LYXERR(Debug::PARSER, "LongString: `" << getString() << '\'');
+ LYXERR(Debug::PARSER, "LongString: `" << tmpstr << '\'');
// We do a case independent comparison, like searchKeyword does.
- if (compare_ascii_no_case(token, endtoken) == 0)
+ if (compare_no_case(token, endtoken) == 0)
break;
- string tmpstr = getString();
if (firstline) {
- size_t i = tmpstr.find_first_not_of(' ');
+ size_t i = tmpstr.find_first_not_of(from_ascii(" \t"));
if (i != string::npos)
prefix = tmpstr.substr(0, i);
firstline = false;
// further lines in long strings may have the same
// whitespace prefix as the first line. Remove it.
- if (prefix.length() && prefixIs(tmpstr, prefix))
- tmpstr.erase(0, prefix.length() - 1);
+ if (!prefix.empty() && prefixIs(tmpstr, prefix))
+ tmpstr.erase(0, prefix.length());
- str += ltrim(tmpstr, "\t") + '\n';
+ str += tmpstr + '\n';
}
if (!pimpl_->is)
- printError("Long string not ended by `" + endtoken + '\'');
+ printError("Long string not ended by `" + to_utf8(endtoken) + '\'');
return str;
}
bool Lexer::getBool() const
{
- string const s = pimpl_->getString();
+ string const s = pimpl_->getString();
if (s == "false" || s == "0") {
lastReadOk_ = true;
return false;
{
docstring res;
res += '"';
- res += subst(subst(arg, from_ascii("\\"), from_ascii("\\\\")),
+ res += subst(subst(arg, from_ascii("\\"), from_ascii("\\\\")),
from_ascii("\""), from_ascii("\\\""));
res += '"';
return res;
string token;
*this >> token;
if (token != required) {
- LYXERR0("Missing '" << required << "'-tag in " << pimpl_->context
+ LYXERR0("Missing '" << required << "'-tag in " << pimpl_->context
<< ". Got " << token << " instead. Line: " << lineNumber());
pushToken(token);
}