[LyX/master] Revert "DocBook: make openParTag/closeTag use paragraphs instead of layouts."

Thibaut Cuvelier tcuvelier at lyx.org
Mon Aug 3 20:33:02 UTC 2020


commit 21c92c8a129b5f3ff56de33bf2941a25967cffbb
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Mon Aug 3 22:56:55 2020 +0200

    Revert "DocBook: make openParTag/closeTag use paragraphs instead of layouts."
    
    This reverts commit 3d7c802c220c18e446829cf4ba7796c6c8d23ae2.
---
 src/output_docbook.cpp |   39 +++++++++++++++++++--------------------
 1 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp
index a081b2d..2e7b637 100644
--- a/src/output_docbook.cpp
+++ b/src/output_docbook.cpp
@@ -189,10 +189,8 @@ namespace {
 
 // convenience functions
 
-void openParTag(XMLStream & xs, Paragraph const & par)
+void openParTag(XMLStream & xs, Layout const & lay)
 {
-	Layout const & lay = par.layout();
-
 	if (lay.docbookwrappertag() != "NONE")
 		xs << xml::StartTag(lay.docbookwrappertag(), lay.docbookwrapperattr());
 
@@ -207,10 +205,8 @@ void openParTag(XMLStream & xs, Paragraph const & par)
 }
 
 
-void closeTag(XMLStream & xs, Paragraph const & par)
+void closeTag(XMLStream & xs, Layout const & lay)
 {
-	Layout const & lay = par.layout();
-
 	if (lay.docbookitemtag() != "NONE")
 		xs << xml::EndTag(lay.docbookitemtag());
 
@@ -298,8 +294,8 @@ ParagraphList::const_iterator findEndOfEnvironment(
 		ParagraphList::const_iterator const & pend)
 {
 	ParagraphList::const_iterator p = pstart;
+	Layout const &bstyle = p->layout();
 	size_t const depth = p->params().depth();
-
 	for (++p; p != pend; ++p) {
 		Layout const &style = p->layout();
 		// It shouldn't happen that e.g. a section command occurs inside
@@ -319,10 +315,9 @@ ParagraphList::const_iterator findEndOfEnvironment(
 		// FIXME I am not sure about the first check.
 		// Surely we *could* have different layouts that count as
 		// LATEX_PARAGRAPH, right?
-		if (style.latextype == LATEX_PARAGRAPH || style != p->layout())
+		if (style.latextype == LATEX_PARAGRAPH || style != bstyle)
 			return p;
 	}
-
 	return pend;
 }
 
@@ -402,6 +397,8 @@ ParagraphList::const_iterator makeParagraphs(
 	ParagraphList::const_iterator const begin = text.paragraphs().begin();
 	ParagraphList::const_iterator par = pbegin;
 	for (; par != pend; ++par) {
+		Layout const &lay = par->layout();
+
 		// We want to open the paragraph tag if:
 		//   (i) the current layout permits multiple paragraphs
 		//  (ii) we are either not already inside a paragraph (HTMLIsBlock) OR
@@ -431,7 +428,7 @@ ParagraphList::const_iterator makeParagraphs(
 		}
 
 		// Plain layouts must be ignored.
-		if (!special_case && buf.params().documentClass().isPlainLayout(par->layout()) && !runparams.docbook_force_pars)
+		if (!special_case && buf.params().documentClass().isPlainLayout(lay) && !runparams.docbook_force_pars)
 			special_case = true;
 		// TODO: Could get rid of this with a DocBook equivalent to htmlisblock?
 		if (!special_case && par->size() == 1 && par->getInset(0)) {
@@ -484,12 +481,12 @@ ParagraphList::const_iterator makeParagraphs(
 
 		if (!cleaned.empty()) {
 			if (open_par)
-				openParTag(xs, *par);
+				openParTag(xs, lay);
 
 			xs << XMLStream::ESCAPE_NONE << os2.str();
 
 			if (close_par) {
-				closeTag(xs, *par);
+				closeTag(xs, lay);
 				xs << xml::CR();
 			}
 		}
@@ -513,12 +510,13 @@ ParagraphList::const_iterator makeEnvironment(
 		ParagraphList::const_iterator const & pbegin,
 		ParagraphList::const_iterator const & pend)
 {
-	auto const begin = text.paragraphs().begin();
+	ParagraphList::const_iterator const begin = text.paragraphs().begin();
 	ParagraphList::const_iterator par = pbegin;
+	Layout const &bstyle = par->layout();
 	depth_type const origdepth = pbegin->params().depth();
 
 	// open tag for this environment
-	openParTag(xs, *par);
+	openParTag(xs, bstyle);
 	xs << xml::CR();
 
 	// we will on occasion need to remember a layout from before.
@@ -537,7 +535,7 @@ ParagraphList::const_iterator makeEnvironment(
 			// One is that we are still in the environment in which we
 			// started---which we will be if the depth is the same.
 			if (par->params().depth() == origdepth) {
-				LATTEST(par->layout() == style);
+				LATTEST(bstyle == style);
 				if (lastlay != nullptr) {
 					closeItemTag(xs, *lastlay);
 					if (lastlay->docbookitemwrappertag() != "NONE") {
@@ -672,7 +670,7 @@ ParagraphList::const_iterator makeEnvironment(
 			xs << xml::CR();
 		}
 	}
-	closeTag(xs, *par);
+	closeTag(xs, bstyle);
 	xs << xml::CR();
 	return pend;
 }
@@ -685,15 +683,16 @@ void makeCommand(
 		Text const & text,
 		ParagraphList::const_iterator const & pbegin)
 {
+	Layout const &style = pbegin->layout();
+
 	// No need for labels, as they are handled by DocBook tags.
 
-	openParTag(xs, *pbegin);
+	openParTag(xs, style);
 
-	auto const begin = text.paragraphs().begin();
+	ParagraphList::const_iterator const begin = text.paragraphs().begin();
 	pbegin->simpleDocBookOnePar(buf, xs, runparams,
 								text.outerFont(distance(begin, pbegin)));
-
-	closeTag(xs, *pbegin);
+	closeTag(xs, style);
 	xs << xml::CR();
 }
 


More information about the lyx-cvs mailing list