]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Parser.h
fix translation of \nobreakdash in tex2lyx
[lyx.git] / src / tex2lyx / Parser.h
index 7c70ecca97c1a0cae3a5ddb0b4f81b221718b5bf..93e29c17ed8ad75e18fc4a18e9e9d730222a87c8 100644 (file)
@@ -77,14 +77,12 @@ public:
        ///
        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;
 
@@ -119,6 +117,11 @@ public:
        ///
        ~Parser();
 
+       /// change the latex encoding of the input stream
+       void setEncoding(std::string const & encoding);
+       /// get the current latex encoding of the input stream
+       std::string getEncoding() const { return encoding_latex_; }
+
        ///
        int lineno() const { return lineno_; }
        ///
@@ -150,8 +153,18 @@ public:
        /*!
         * \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(bool keepws = false);
+       /*!
+        * the same as getOpt but without the brackets
         */
-       std::string getOpt();
+       std::string getOptContent();
        /*!
         * \returns getFullArg('(', ')') including the parentheses or the
         * empty string if there is no such argument.
@@ -175,17 +188,18 @@ public:
        ///
        void push_back(Token const & t);
        /// The previous token.
-       Token const prev_token() const;
+       Token const prev_token() const;
        /// The current token.
-       Token const curr_token() const;
+       Token const curr_token() const;
        /// The next token.
-       Token const next_token();
+       Token const next_token();
        /// Make the next token current and return that.
-       Token const get_token();
+       Token const get_token();
        /// \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);
        ///
@@ -214,6 +228,8 @@ private:
        idocstringstream * iss_;
        ///
        idocstream & is_;
+       /// latex name of the current encoding
+       std::string encoding_latex_;
 };