[LyX/master] XHTML/DocBook: merge code duplicates for vertical alignment.

Thibaut Cuvelier tcuvelier at lyx.org
Fri Apr 1 01:48:32 UTC 2022


commit c7896cf922f8297ba9bbfc0fa13b99ccaf9168a5
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Fri Apr 1 03:51:24 2022 +0200

    XHTML/DocBook: merge code duplicates for vertical alignment.
---
 src/insets/InsetTabular.cpp |   55 ++++++++++++------------------------------
 src/insets/InsetTabular.h   |    3 ++
 2 files changed, 19 insertions(+), 39 deletions(-)

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 17d58dd..092c868 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -3626,6 +3626,19 @@ void Tabular::docbookRow(XMLStream & xs, row_type row,
 }
 
 
+std::string Tabular::getVAlignAsXmlAttribute(idx_type cell) const
+{
+	switch (getVAlignment(cell)) {
+	case LYX_VALIGN_TOP:
+		return "valign='top'";
+	case LYX_VALIGN_BOTTOM:
+		return "valign='bottom'";
+	case LYX_VALIGN_MIDDLE:
+		return "valign='middle'";
+	}
+}
+
+
 void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 		   OutputParams const & runparams, bool header) const
 {
@@ -3666,19 +3679,7 @@ void Tabular::docbookRowAsHTML(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3733,19 +3734,7 @@ void Tabular::docbookRowAsCALS(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
@@ -3897,19 +3886,7 @@ docstring Tabular::xhtmlRow(XMLStream & xs, row_type row,
 			attr << "center";
 			break;
 		}
-		attr << "'";
-		attr << " valign='";
-		switch (getVAlignment(cell)) {
-		case LYX_VALIGN_TOP:
-			attr << "top";
-			break;
-		case LYX_VALIGN_BOTTOM:
-			attr << "bottom";
-			break;
-		case LYX_VALIGN_MIDDLE:
-			attr << "middle";
-		}
-		attr << "'";
+		attr << "' " << getVAlignAsXmlAttribute(cell);
 
 		if (isMultiColumn(cell))
 			attr << " colspan='" << columnSpan(cell) << "'";
diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h
index 645da68..8420a48 100644
--- a/src/insets/InsetTabular.h
+++ b/src/insets/InsetTabular.h
@@ -946,6 +946,9 @@ public:
 	docstring xhtmlRow(XMLStream & xs, row_type, OutputParams const &,
 	                   bool header = false) const;
 
+	/// Transforms the vertical alignment of the given cell as a prebaked XML attribute (for HTML and CALS).
+	std::string getVAlignAsXmlAttribute(idx_type cell) const;
+
 	/// change associated Buffer
 	void setBuffer(Buffer & buffer);
 	/// retrieve associated Buffer


More information about the lyx-cvs mailing list