#include "LaTeXFeatures.h"
#include "Lexer.h"
#include "output_latex.h"
+#include "output_docbook.h"
#include "output_xhtml.h"
#include "OutputParams.h"
#include "TextClass.h"
}
-Inset::DisplayType InsetListings::display() const
+Inset::RowFlags InsetListings::rowFlags() const
{
- return params().isInline() || params().isFloat() ? Inline : AlignLeft;
+ return params().isInline() || params().isFloat() ? Inline : Display | AlignLeft;
}
}
-docstring InsetListings::xhtml(XHTMLStream & os, OutputParams const & rp) const
+docstring InsetListings::xhtml(XMLStream & os, OutputParams const & rp) const
{
odocstringstream ods;
- XHTMLStream out(ods);
+ XMLStream out(ods);
bool const isInline = params().isInline();
if (isInline)
- out << html::CompTag("br");
+ out << xml::CompTag("br");
else {
- out << html::StartTag("div", "class='float-listings'");
+ out << xml::StartTag("div", "class='float-listings'");
docstring caption = getCaptionHTML(rp);
if (!caption.empty())
- out << html::StartTag("div", "class='listings-caption'")
- << XHTMLStream::ESCAPE_NONE
- << caption << html::EndTag("div");
+ out << xml::StartTag("div", "class='listings-caption'")
+ << XMLStream::ESCAPE_NONE
+ << caption << xml::EndTag("div");
}
InsetLayout const & il = getLayout();
if (!lang.empty())
attr += " " + lang;
attr += "'";
- out << html::StartTag(tag, attr);
+ out << xml::StartTag(tag, attr);
OutputParams newrp = rp;
newrp.html_disable_captions = true;
// We don't want to convert dashes here. That's the only conversion we
// do for XHTML, so this is safe.
newrp.pass_thru = true;
docstring def = InsetText::insetAsXHTML(out, newrp, InsetText::JustText);
- out << html::EndTag(tag);
+ out << xml::EndTag(tag);
if (isInline) {
- out << html::CompTag("br");
+ out << xml::CompTag("br");
// escaping will already have been done
- os << XHTMLStream::ESCAPE_NONE << ods.str();
+ os << XMLStream::ESCAPE_NONE << ods.str();
} else {
- out << html::EndTag("div");
+ out << xml::EndTag("div");
// In this case, this needs to be deferred, but we'll put it
// before anything the text itself deferred.
def = ods.str() + '\n' + def;
}
+void InsetListings::docbook(XMLStream & xs, OutputParams const & rp) const
+{
+ InsetLayout const & il = getLayout();
+
+ // Forge the attributes.
+ string attrs;
+ if (!il.docbookattr().empty())
+ attrs += " role=\"" + il.docbookattr() + "\"";
+ string const lang = params().getParamValue("language");
+ if (!lang.empty())
+ attrs += " language=\"" + lang + "\"";
+ xs << xml::StartTag(il.docbooktag(), attrs);
+ xs.startDivision(false);
+
+ // Deal with the caption.
+ docstring caption = getCaptionDocBook(rp);
+ if (!caption.empty()) {
+ xs << xml::StartTag("bridgehead");
+ xs << XMLStream::ESCAPE_NONE;
+ xs << caption;
+ xs << xml::EndTag("bridgehead");
+ }
+
+ // Deal with the content of the listing.
+ OutputParams newrp = rp;
+ newrp.pass_thru = true;
+ newrp.docbook_make_pars = false;
+ newrp.par_begin = 0;
+ newrp.par_end = text().paragraphs().size();
+ newrp.docbook_in_listing = true;
+
+ docbookParagraphs(text(), buffer(), xs, newrp);
+
+ // Done with the listing.
+ xs.endDivision();
+ xs << xml::EndTag(il.docbooktag());
+}
+
+
string InsetListings::contextMenuName() const
{
return "context-listings";