mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
DocBook: add support for IGNORE tags.
These paragraphs will simply have no output (no enclosing DocBook tag, no content). This change is as backward-compatible as possible: without this commit, the paragraphs will be output, but in an <IGNORE> tag (not much more can be achieved without this). It is mostly made for metadata and formatting instructions. (As opposed to NONE, which corresponds to outputting the paragraph without enclosing DocBook tag.)
This commit is contained in:
parent
222a317dd2
commit
6bc04367cf
@ -312,7 +312,7 @@ InsetLayout::InsetDecoration InsetArgument::decoration() const
|
|||||||
|
|
||||||
|
|
||||||
void InsetArgument::docbook(XMLStream & xs, OutputParams const & rp) const {
|
void InsetArgument::docbook(XMLStream & xs, OutputParams const & rp) const {
|
||||||
if (docbooktag_ != from_ascii("NONE")) {
|
if (docbooktag_ != from_ascii("NONE") && docbooktag_ != from_ascii("IGNORE")) {
|
||||||
// TODO: implement docbooktagtype_.
|
// TODO: implement docbooktagtype_.
|
||||||
xs << xml::StartTag(docbooktag_, docbookattr_);
|
xs << xml::StartTag(docbooktag_, docbookattr_);
|
||||||
InsetText::docbook(xs, rp);
|
InsetText::docbook(xs, rp);
|
||||||
|
@ -616,7 +616,7 @@ void InsetText::docbook(XMLStream & xs, OutputParams const & rp, XHTMLOptions op
|
|||||||
}
|
}
|
||||||
|
|
||||||
InsetLayout const & il = getLayout();
|
InsetLayout const & il = getLayout();
|
||||||
if (opts & WriteOuterTag && !il.docbooktag().empty() && il.docbooktag() != "NONE") {
|
if (opts & WriteOuterTag && !il.docbooktag().empty() && il.docbooktag() != "NONE" && il.docbooktag() != "IGNORE") {
|
||||||
docstring attrs = docstring();
|
docstring attrs = docstring();
|
||||||
if (!il.docbookattr().empty())
|
if (!il.docbookattr().empty())
|
||||||
attrs += from_ascii(il.docbookattr());
|
attrs += from_ascii(il.docbookattr());
|
||||||
@ -637,7 +637,7 @@ void InsetText::docbook(XMLStream & xs, OutputParams const & rp, XHTMLOptions op
|
|||||||
docbookParagraphs(text_, buffer(), xs, runparams);
|
docbookParagraphs(text_, buffer(), xs, runparams);
|
||||||
xs.endDivision();
|
xs.endDivision();
|
||||||
|
|
||||||
if (opts & WriteOuterTag)
|
if (opts & WriteOuterTag && !il.docbooktag().empty() && il.docbooktag() != "NONE" && il.docbooktag() != "IGNORE")
|
||||||
xs << xml::EndTag(il.docbooktag());
|
xs << xml::EndTag(il.docbooktag());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,6 +412,11 @@ void makeParagraph(
|
|||||||
OutputParams const & runparams,
|
OutputParams const & runparams,
|
||||||
ParagraphList::const_iterator const & par)
|
ParagraphList::const_iterator const & par)
|
||||||
{
|
{
|
||||||
|
// If this kind of layout should be ignored, already leave.
|
||||||
|
if (par->layout().docbooktag() == "IGNORE")
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Useful variables.
|
||||||
auto const begin = text.paragraphs().begin();
|
auto const begin = text.paragraphs().begin();
|
||||||
auto const end = text.paragraphs().end();
|
auto const end = text.paragraphs().end();
|
||||||
auto prevpar = text.paragraphs().getParagraphBefore(par);
|
auto prevpar = text.paragraphs().getParagraphBefore(par);
|
||||||
@ -503,15 +508,16 @@ void makeParagraph(
|
|||||||
++nextpar;
|
++nextpar;
|
||||||
auto pars = par->simpleDocBookOnePar(buf, runparams, text.outerFont(distance(begin, par)), 0, nextpar == end, special_case);
|
auto pars = par->simpleDocBookOnePar(buf, runparams, text.outerFont(distance(begin, par)), 0, nextpar == end, special_case);
|
||||||
for (docstring const & parXML : pars) {
|
for (docstring const & parXML : pars) {
|
||||||
if (xml::isNotOnlySpace(parXML)) {
|
if (!xml::isNotOnlySpace(parXML))
|
||||||
if (open_par)
|
continue;
|
||||||
openParTag(xs, &*par, prevpar);
|
|
||||||
|
|
||||||
xs << XMLStream::ESCAPE_NONE << parXML;
|
if (open_par)
|
||||||
|
openParTag(xs, &*par, prevpar);
|
||||||
|
|
||||||
if (close_par)
|
xs << XMLStream::ESCAPE_NONE << parXML;
|
||||||
closeParTag(xs, &*par, (nextpar != end) ? &*nextpar : nullptr);
|
|
||||||
}
|
if (close_par)
|
||||||
|
closeParTag(xs, &*par, (nextpar != end) ? &*nextpar : nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -522,6 +528,11 @@ void makeEnvironment(Text const &text,
|
|||||||
OutputParams const &runparams,
|
OutputParams const &runparams,
|
||||||
ParagraphList::const_iterator const & par)
|
ParagraphList::const_iterator const & par)
|
||||||
{
|
{
|
||||||
|
// If this kind of layout should be ignored, already leave.
|
||||||
|
if (par->layout().docbooktag() == "IGNORE")
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Useful variables.
|
||||||
auto const end = text.paragraphs().end();
|
auto const end = text.paragraphs().end();
|
||||||
auto nextpar = par;
|
auto nextpar = par;
|
||||||
++nextpar;
|
++nextpar;
|
||||||
@ -618,10 +629,18 @@ ParagraphList::const_iterator makeListEnvironment(Text const &text,
|
|||||||
OutputParams const &runparams,
|
OutputParams const &runparams,
|
||||||
ParagraphList::const_iterator const & begin)
|
ParagraphList::const_iterator const & begin)
|
||||||
{
|
{
|
||||||
|
// Useful variables.
|
||||||
auto par = begin;
|
auto par = begin;
|
||||||
auto const end = text.paragraphs().end();
|
auto const end = text.paragraphs().end();
|
||||||
auto const envend = findEndOfEnvironment(par, end);
|
auto const envend = findEndOfEnvironment(par, end);
|
||||||
|
|
||||||
|
// If this kind of layout should be ignored, already leave.
|
||||||
|
if (begin->layout().docbooktag() == "IGNORE") {
|
||||||
|
auto nextpar = par;
|
||||||
|
++nextpar;
|
||||||
|
return nextpar;
|
||||||
|
}
|
||||||
|
|
||||||
// Output the opening tag for this environment.
|
// Output the opening tag for this environment.
|
||||||
Layout const & envstyle = par->layout();
|
Layout const & envstyle = par->layout();
|
||||||
openTag(xs, envstyle.docbookwrappertag(), envstyle.docbookwrapperattr(), envstyle.docbookwrappertagtype());
|
openTag(xs, envstyle.docbookwrappertag(), envstyle.docbookwrapperattr(), envstyle.docbookwrappertagtype());
|
||||||
@ -708,6 +727,11 @@ void makeCommand(
|
|||||||
OutputParams const & runparams,
|
OutputParams const & runparams,
|
||||||
ParagraphList::const_iterator const & par)
|
ParagraphList::const_iterator const & par)
|
||||||
{
|
{
|
||||||
|
// If this kind of layout should be ignored, already leave.
|
||||||
|
if (par->layout().docbooktag() == "IGNORE")
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Useful variables.
|
||||||
// Unlike XHTML, no need for labels, as they are handled by DocBook tags.
|
// Unlike XHTML, no need for labels, as they are handled by DocBook tags.
|
||||||
auto const begin = text.paragraphs().begin();
|
auto const begin = text.paragraphs().begin();
|
||||||
auto const end = text.paragraphs().end();
|
auto const end = text.paragraphs().end();
|
||||||
|
Loading…
Reference in New Issue
Block a user