#include "MathStream.h"
+#include "MathFactory.h"
#include "MathData.h"
#include "MathExtern.h"
-#include "support/textutils.h"
+#include "TexRow.h"
+
#include "support/docstring.h"
+#include "support/RefChanger.h"
+#include "support/textutils.h"
#include <algorithm>
#include <cstring>
: os_(os), fragile_(fragile), firstitem_(false), latex_(latex),
output_(output), pendingspace_(false), pendingbrace_(false),
textmode_(false), locked_(0), ascii_(0), canbreakline_(true),
- line_(0), encoding_(encoding)
-{}
-
-
-WriteStream::WriteStream(otexrowstream & os)
- : os_(os), fragile_(false), firstitem_(false), latex_(false),
- output_(wsDefault), pendingspace_(false), pendingbrace_(false),
- textmode_(false), locked_(0), ascii_(0), canbreakline_(true),
- line_(0), encoding_(0)
+ line_(0), encoding_(encoding),
+ row_entry_(make_unique<RowEntry>(TexRow::row_none))
{}
}
-void WriteStream::pushRowEntry(TexRow::RowEntry entry)
-{
- outer_row_entries_.push_back(entry);
-}
-
-
-void WriteStream::popRowEntry()
+Changer WriteStream::changeRowEntry(RowEntry entry)
{
- if (!outer_row_entries_.empty())
- outer_row_entries_.pop_back();
+ return make_change(*row_entry_, entry);
}
bool WriteStream::startOuterRow()
{
- size_t n = outer_row_entries_.size();
- if (n > 0)
- return texrow().start(outer_row_entries_[n - 1]);
- else
+ if (TexRow::isNone(*row_entry_))
return false;
+ return texrow().start(*row_entry_);
}
}
+docstring convertDelimToXMLEscape(docstring const & name)
+{
+ if (name.size() == 1) {
+ char_type const c = name[0];
+ if (c == '<')
+ return from_ascii("<");
+ else if (c == '>')
+ return from_ascii(">");
+ else
+ return name;
+ }
+ MathWordList const & words = mathedWordList();
+ MathWordList::const_iterator it = words.find(name);
+ if (it != words.end()) {
+ docstring const escape = it->second.xmlname;
+ return escape;
+ }
+ LYXERR0("Unable to find `" << name <<"' in the mathWordList.");
+ return name;
+}
+
} // namespace lyx