}
-string Token::asString() const
-{
- return cs_;
-}
-
-
string Token::asInput() const
{
if (cat_ == catComment)
void Parser::setEncoding(std::string const & e)
{
Encoding const * enc = encodings.fromLaTeXName(e);
- //cerr << "setting encoding to " << enc->iconvName()<<std::endl;
+ if (!enc) {
+ cerr << "Unknown encoding " << e << ". Ignoring." << std::endl;
+ return;
+ }
+ //cerr << "setting encoding to " << enc->iconvName() << std::endl;
is_ << lyx::setEncoding(enc->iconvName());
encoding_latex_ = e;
}
}
-void Parser::skip_spaces(bool skip_comments)
+bool Parser::skip_spaces(bool skip_comments)
{
// We just silently return if we have no more tokens.
// skip_spaces() should be callable at any time,
// the caller must check p::good() anyway.
+ bool skipped = false;
while (good()) {
get_token();
if (isParagraph()) {
putback();
break;
}
- if ( curr_token().cat() == catSpace ||
- curr_token().cat() == catNewline ||
- (curr_token().cat() == catComment && curr_token().cs().empty()))
+ if (curr_token().cat() == catSpace ||
+ curr_token().cat() == catNewline) {
+ skipped = true;
+ continue;
+ }
+ if ((curr_token().cat() == catComment && curr_token().cs().empty()))
continue;
if (skip_comments && curr_token().cat() == catComment)
cerr << " Ignoring comment: " << curr_token().asInput();
break;
}
}
+ return skipped;
}
}
-string Parser::getOpt()
+string Parser::getOpt(bool keepws)
{
string const res = getArg('[', ']');
- return res.empty() ? string() : '[' + res + ']';
+ if (res.empty()) {
+ if (keepws)
+ unskip_spaces(true);
+ return string();
+ }
+ return '[' + res + ']';
}
putback();
res += '{' + verbatim_item() + '}';
} else
- res += t.asString();
+ res += t.cs();
}
}
return res;