#include <config.h>
#include "Lexer.h"
+#include "Format.h"
#include "support/convert.h"
#include "support/debug.h"
bool Lexer::Pimpl::setFile(FileName const & filename)
{
// Check the format of the file.
- string const format = filename.guessFormatFromContents();
-
- if (format == "gzip" || format == "zip" || format == "compress") {
+ if (formats.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
// Skip byte order mark.
if (is.peek() == 0xef) {
- int c = is.get();
+ is.get();
if (is.peek() == 0xbb) {
- c = is.get();
+ is.get();
LASSERT(is.get() == 0xbf, /**/);
} else
is.unget();
}
- unsigned char c = 0; // getc() returns an int
char cc = 0;
status = 0;
while (is && !status) {
is.get(cc);
- c = cc;
+ unsigned char c = cc;
if (c == commentChar) {
// Read rest of line (fast :-)
if (esc) {
- bool escaped = false;
do {
- escaped = false;
+ bool escaped = false;
is.get(cc);
c = cc;
if (c == '\r') continue;
//////////////////////////////////////////////////////////////////////
Lexer::Lexer()
- : pimpl_(new Pimpl(0, 0))
+ : pimpl_(new Pimpl(0, 0)), lastReadOk_(false)
{}
}
-string const Lexer::getString() const
+string const Lexer::getString(bool trim) const
{
lastReadOk_ = pimpl_->status == LEX_DATA || pimpl_->status == LEX_TOKEN;
if (lastReadOk_)
- return pimpl_->getString();
+ return trim ? support::trim(pimpl_->getString(), "\t ") : pimpl_->getString();
return string();
}
-docstring const Lexer::getDocString() const
+docstring const Lexer::getDocString(bool trim) const
{
lastReadOk_ = pimpl_->status == LEX_DATA || pimpl_->status == LEX_TOKEN;
if (lastReadOk_)
- return pimpl_->getDocString();
+ return trim ? support::trim(pimpl_->getDocString(), "\t ") : pimpl_->getDocString();
return docstring();
}