////////////////////////////////////////////////////////////////
XHTMLStream::XHTMLStream(odocstream & os)
- :os_(os)
+ : os_(os), nextraw_(false)
{}
XHTMLStream & XHTMLStream::operator<<(docstring const & d)
{
clearTagDeque();
- os_ << html::htmlize(d);
+ if (nextraw_) {
+ os_ << d;
+ nextraw_ = false;
+ } else
+ os_ << html::htmlize(d);
return *this;
}
XHTMLStream & XHTMLStream::operator<<(const char * s)
{
clearTagDeque();
- os_ << html::htmlize(from_ascii(s));
+ docstring const d = from_ascii(s);
+ if (nextraw_) {
+ os_ << d;
+ nextraw_ = false;
+ } else
+ os_ << html::htmlize(d);
return *this;
}
XHTMLStream & XHTMLStream::operator<<(char_type c)
{
clearTagDeque();
- os_ << html::escapeChar(c);
+ if (nextraw_) {
+ os_ << c;
+ nextraw_ = false;
+ } else
+ os_ << html::escapeChar(c);
+ return *this;
+}
+
+
+XHTMLStream & XHTMLStream::operator<<(NextRaw const &)
+{
+ nextraw_ = true;
return *this;
}
xs.cr();
}
if (!deferred.empty()) {
- xs << deferred;
+ xs << XHTMLStream::NextRaw() << deferred;
xs.cr();
}
}