///
Token(docstring const & cs, CatCode cat) : cs_(to_utf8(cs)), cat_(cat) {}
- ///
+ /// Returns the token as string
std::string const & cs() const { return cs_; }
/// Returns the catcode of the token
CatCode cat() const { return cat_; }
///
char character() const { return cs_.empty() ? 0 : cs_[0]; }
- /// Returns the token as string
- std::string asString() const;
/// Returns the token verbatim
std::string asInput() const;
/*!
* \returns getArg('[', ']') including the brackets or the
* empty string if there is no such argument.
+ * No whitespace is eaten if \p keepws is true and no optional
+ * argument exists. This is important if an optional argument is
+ * parsed that would go after a command in ERT: In this case the
+ * whitespace is needed to separate the ERT from the subsequent
+ * word. Without it, the ERT and the next word would be concatenated
+ * during .tex export, thus creating an invalid command.
*/
- std::string getOpt();
+ std::string getOpt(bool keepws = false);
/*!
- * \returns getFullArg('[', ']') including the parentheses or the
- * empty string if there is no such argument.
+ * the same as getOpt but without the brackets
*/
std::string getOptContent();
/*!
- * the same as getOpt but without the brackets
+ * \returns getFullArg('(', ')') including the parentheses or the
+ * empty string if there is no such argument.
*/
std::string getFullParentheseArg();
/*!
/// \return whether the current token starts a new paragraph
bool isParagraph();
/// skips spaces (and comments if \p skip_comments is true)
- void skip_spaces(bool skip_comments = false);
+ /// \return whether whitespace was skipped (not comments)
+ bool skip_spaces(bool skip_comments = false);
/// puts back spaces (and comments if \p skip_comments is true)
void unskip_spaces(bool skip_comments = false);
///