#include <config.h>
+#include "Encoding.h"
#include "Parser.h"
#include <iostream>
* \p c must have catcode catNewline, and it must be the last character read
* from \p is.
*/
-char getNewline(idocstream & is, char c)
+char_type getNewline(idocstream & is, char_type c)
{
// we have to handle 3 different line endings:
// - UNIX (\n)
}
-string Token::asString() const
-{
- return cs_;
-}
-
-
string Token::asInput() const
{
if (cat_ == catComment)
Parser::Parser(idocstream & is)
- : lineno_(0), pos_(0), iss_(0), is_(is)
+ : lineno_(0), pos_(0), iss_(0), is_(is), encoding_latex_("utf8")
{
}
Parser::Parser(string const & s)
: lineno_(0), pos_(0),
- iss_(new idocstringstream(from_utf8(s))), is_(*iss_)
+ iss_(new idocstringstream(from_utf8(s))), is_(*iss_),
+ encoding_latex_("utf8")
{
}
}
+void Parser::setEncoding(std::string const & e)
+{
+ Encoding const * enc = encodings.fromLaTeXName(e);
+ 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::push_back(Token const & t)
{
tokens_.push_back(t);
}
-Token const & Parser::prev_token() const
+// We return a copy here because the tokens_ vector may get reallocated
+Token const Parser::prev_token() const
{
static const Token dummy;
return pos_ > 1 ? tokens_[pos_ - 2] : dummy;
}
-Token const & Parser::curr_token() const
+// We return a copy here because the tokens_ vector may get reallocated
+Token const Parser::curr_token() const
{
static const Token dummy;
return pos_ > 0 ? tokens_[pos_ - 1] : dummy;
}
-Token const & Parser::next_token()
+// We return a copy here because the tokens_ vector may get reallocated
+Token const Parser::next_token()
{
static const Token dummy;
return good() ? tokens_[pos_] : dummy;
}
-Token const & Parser::get_token()
+// We return a copy here because the tokens_ vector may get reallocated
+Token const Parser::get_token()
{
static const Token dummy;
//cerr << "looking at token " << tokens_[pos_] << " pos: " << pos_ << '\n';
}
+string Parser::getOptContent()
+// the same as getOpt but without the brackets
+{
+ string const res = getArg('[', ']');
+ return res.empty() ? string() : res;
+}
+
+
string Parser::getFullParentheseArg()
{
Arg arg = getFullArg('(', ')');
putback();
res += '{' + verbatim_item() + '}';
} else
- res += t.asString();
+ res += t.cs();
}
}
return res;