Doxygen
Loading...
Searching...
No Matches
DocHtmlCell Class Reference

Node representing a HTML table cell. More...

#include <src/docnode.h>

+ Inheritance diagram for DocHtmlCell:
+ Collaboration diagram for DocHtmlCell:

Public Types

enum  Alignment { Left , Right , Center }
 
enum  Valignment { Top , Middle , Bottom }
 

Public Member Functions

 DocHtmlCell (DocParser *parser, DocNodeVariant *parent, const HtmlAttribList &attribs, bool isHeading)
 
bool isHeading () const
 
bool isFirst () const
 
bool isLast () const
 
void markFirst (bool v=TRUE)
 
void markLast (bool v=TRUE)
 
const HtmlAttribListattribs () const
 
Token parse ()
 
Token parseXml ()
 
uint32_t rowIndex () const
 
uint32_t columnIndex () const
 
uint32_t rowSpan () const
 
uint32_t colSpan () const
 
Alignment alignment () const
 
Valignment valignment () const
 
- Public Member Functions inherited from DocCompoundNode
 DocCompoundNode (DocParser *parser, DocNodeVariant *parent)
 
DocNodeListchildren ()
 
const DocNodeListchildren () const
 
- Public Member Functions inherited from DocNode
 DocNode (DocParser *parser, DocNodeVariant *parent)
 
 ~DocNode ()=default
 
DocNodeVariantparent ()
 
const DocNodeVariantparent () const
 
DocNodeVariantthisVariant ()
 
const DocNodeVariantthisVariant () const
 
void setThisVariant (DocNodeVariant *thisVariant)
 
DocParserparser ()
 
const DocParserparser () const
 
void setParent (DocNodeVariant *parent)
 
bool isPreformatted () const
 

Private Member Functions

void setRowIndex (uint32_t idx)
 
void setColumnIndex (uint32_t idx)
 

Private Attributes

bool m_isHeading = false
 
bool m_isFirst = false
 
bool m_isLast = false
 
HtmlAttribList m_attribs
 
uint32_t m_rowIdx = static_cast<uint32_t>(-1)
 
uint32_t m_colIdx = static_cast<uint32_t>(-1)
 

Friends

class DocHtmlTable
 

Additional Inherited Members

- Protected Types inherited from DocNode
enum  RefType { Unknown , Anchor , Section , Table }
 
- Protected Member Functions inherited from DocNode
void setInsidePreformatted (bool p)
 

Detailed Description

Node representing a HTML table cell.

Definition at line 1172 of file docnode.h.

Member Enumeration Documentation

◆ Alignment

Enumerator
Left 
Right 
Center 

Definition at line 1176 of file docnode.h.

◆ Valignment

Enumerator
Top 
Middle 
Bottom 

Definition at line 1177 of file docnode.h.

Constructor & Destructor Documentation

◆ DocHtmlCell()

DocHtmlCell::DocHtmlCell ( DocParser * parser,
DocNodeVariant * parent,
const HtmlAttribList & attribs,
bool isHeading )
inline

Definition at line 1178 of file docnode.h.

1178 :
DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:140
bool isHeading() const
Definition docnode.h:1180
const HtmlAttribList & attribs() const
Definition docnode.h:1185
HtmlAttribList m_attribs
Definition docnode.h:1201
bool m_isHeading
Definition docnode.h:1198
DocParser * parser()
Definition docnode.h:97
DocNodeVariant * parent()
Definition docnode.h:89

References attribs(), DocCompoundNode::DocCompoundNode(), isHeading(), m_attribs, m_isHeading, DocNode::parent(), and DocNode::parser().

Member Function Documentation

◆ alignment()

DocHtmlCell::Alignment DocHtmlCell::alignment ( ) const

Definition at line 1821 of file docnode.cpp.

1822{
1823 for (const auto &attr : attribs())
1824 {
1825 QCString attrName = attr.name.lower();
1826 QCString attrValue = attr.value.lower();
1827 if (attrName=="align")
1828 {
1829 if (attrValue=="center")
1830 return Center;
1831 else if (attrValue=="right")
1832 return Right;
1833 else return Left;
1834 }
1835 else if (attrName=="class" && attrValue.startsWith("markdowntable"))
1836 {
1837 if (attrValue=="markdowntableheadcenter")
1838 return Center;
1839 else if (attrValue=="markdowntableheadright")
1840 return Right;
1841 else if (attrValue=="markdowntableheadleft")
1842 return Left;
1843 else if (attrValue=="markdowntableheadnone")
1844 return Center;
1845 else if (attrValue=="markdowntablebodycenter")
1846 return Center;
1847 else if (attrValue=="markdowntablebodyright")
1848 return Right;
1849 else if (attrValue=="markdowntablebodyleft")
1850 return Left;
1851 else if (attrValue=="markdowntablebodynone")
1852 return Left;
1853 else return Left;
1854 }
1855 }
1856 return Left;
1857}
bool startsWith(const char *s) const
Definition qcstring.h:492

References attribs(), Center, Left, Right, and QCString::startsWith().

Referenced by LatexDocVisitor::operator()().

◆ attribs()

const HtmlAttribList & DocHtmlCell::attribs ( ) const
inline

◆ colSpan()

uint32_t DocHtmlCell::colSpan ( ) const

Definition at line 1809 of file docnode.cpp.

1810{
1811 for (const auto &attr : attribs())
1812 {
1813 if (attr.name.lower()=="colspan")
1814 {
1815 return std::max(1u,attr.value.toUInt());
1816 }
1817 }
1818 return 1;
1819}

References attribs().

Referenced by DocHtmlTable::computeTableGrid(), and LatexDocVisitor::operator()().

◆ columnIndex()

uint32_t DocHtmlCell::columnIndex ( ) const
inline

Definition at line 1189 of file docnode.h.

1189{ return m_colIdx; }
uint32_t m_colIdx
Definition docnode.h:1203

References m_colIdx.

Referenced by LatexDocVisitor::operator()().

◆ isFirst()

bool DocHtmlCell::isFirst ( ) const
inline

Definition at line 1181 of file docnode.h.

1181{ return m_isFirst; }
bool m_isFirst
Definition docnode.h:1199

References m_isFirst.

Referenced by parse(), and parseXml().

◆ isHeading()

◆ isLast()

bool DocHtmlCell::isLast ( ) const
inline

Definition at line 1182 of file docnode.h.

1182{ return m_isLast; }
bool m_isLast
Definition docnode.h:1200

References m_isLast.

Referenced by LatexDocVisitor::operator()().

◆ markFirst()

void DocHtmlCell::markFirst ( bool v = TRUE)
inline

Definition at line 1183 of file docnode.h.

1183{ m_isFirst=v; }

References m_isFirst.

Referenced by DocHtmlRow::parse(), and DocHtmlRow::parseXml().

◆ markLast()

void DocHtmlCell::markLast ( bool v = TRUE)
inline

Definition at line 1184 of file docnode.h.

1184{ m_isLast=v; }

References m_isLast.

Referenced by DocHtmlRow::parse(), and DocHtmlRow::parseXml().

◆ parse()

Token DocHtmlCell::parse ( )

Definition at line 1729 of file docnode.cpp.

1730{
1731 AUTO_TRACE();
1732 Token retval = Token::make_RetVal_OK();
1733 auto ns = AutoNodeStack(parser(),thisVariant());
1734
1735 // parse one or more paragraphs
1736 bool isFirst=TRUE;
1737 DocPara *par=nullptr;
1738 do
1739 {
1740 children().append<DocPara>(parser(),thisVariant());
1741 par = children().get_last<DocPara>();
1742 if (isFirst) { par->markFirst(); isFirst=FALSE; }
1743 retval=par->parse();
1744 if (retval.is(TokenRetval::TK_HTMLTAG))
1745 {
1746 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1747 if (tagId==HtmlTagType::HTML_TD && parser()->context.token->endTag) // found </td> tag
1748 {
1749 retval = Token::make_TK_NEWPARA(); // ignore the tag
1750 }
1751 else if (tagId==HtmlTagType::HTML_TH && parser()->context.token->endTag) // found </th> tag
1752 {
1753 retval = Token::make_TK_NEWPARA(); // ignore the tag
1754 }
1755 }
1756 }
1757 while (retval.is_any_of(TokenRetval::TK_NEWPARA,TokenRetval::RetVal_EndParBlock));
1758 if (par) par->markLast();
1759
1760 return retval;
1761}
DocNodeList & children()
Definition docnode.h:142
bool isFirst() const
Definition docnode.h:1181
DocNodeVariant * thisVariant()
Definition docnode.h:92
void markLast(bool v=TRUE)
Definition docnode.h:1066
void markFirst(bool v=TRUE)
Definition docnode.h:1065
Token parse()
Definition docnode.cpp:5451
bool is(TokenRetval rv) const
bool is_any_of(ARGS... args) const
HtmlTagType
Definition cmdmapper.h:167
#define AUTO_TRACE(...)
Definition docnode.cpp:46
const Mapper< HtmlTagType > * htmlTagMapper
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34
void append(Args &&... args)
Append a new DocNodeVariant to the list by constructing it with type T and parameters Args.
Definition docnode.h:1379
T * get_last()
Returns a pointer to the last element in the list if that element exists and holds a T,...
Definition docnode.h:1390

References DocNodeList::append(), AUTO_TRACE, DocCompoundNode::children(), FALSE, DocNodeList::get_last(), HTML_TD, HTML_TH, Mappers::htmlTagMapper, Token::is(), Token::is_any_of(), isFirst(), DocPara::markFirst(), DocPara::markLast(), DocPara::parse(), DocNode::parser(), DocNode::thisVariant(), and TRUE.

Referenced by DocHtmlRow::parse().

◆ parseXml()

Token DocHtmlCell::parseXml ( )

Definition at line 1763 of file docnode.cpp.

1764{
1765 AUTO_TRACE();
1766 Token retval = Token::make_RetVal_OK();
1767 auto ns = AutoNodeStack(parser(),thisVariant());
1768
1769 // parse one or more paragraphs
1770 bool isFirst=TRUE;
1771 DocPara *par=nullptr;
1772 do
1773 {
1774 children().append<DocPara>(parser(),thisVariant());
1775 par = children().get_last<DocPara>();
1776 if (isFirst) { par->markFirst(); isFirst=FALSE; }
1777 retval=par->parse();
1778 if (retval.is(TokenRetval::TK_HTMLTAG))
1779 {
1780 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1781 if (tagId==HtmlTagType::XML_ITEM && parser()->context.token->endTag) // found </item> tag
1782 {
1783 retval = Token::make_TK_NEWPARA(); // ignore the tag
1784 }
1785 else if (tagId==HtmlTagType::XML_DESCRIPTION && parser()->context.token->endTag) // found </description> tag
1786 {
1787 retval = Token::make_TK_NEWPARA(); // ignore the tag
1788 }
1789 }
1790 }
1791 while (retval.is(TokenRetval::TK_NEWPARA));
1792 if (par) par->markLast();
1793
1794 return retval;
1795}

References DocNodeList::append(), AUTO_TRACE, DocCompoundNode::children(), FALSE, DocNodeList::get_last(), Mappers::htmlTagMapper, Token::is(), isFirst(), DocPara::markFirst(), DocPara::markLast(), DocPara::parse(), DocNode::parser(), DocNode::thisVariant(), TRUE, XML_DESCRIPTION, and XML_ITEM.

Referenced by DocHtmlRow::parseXml().

◆ rowIndex()

uint32_t DocHtmlCell::rowIndex ( ) const
inline

Definition at line 1188 of file docnode.h.

1188{ return m_rowIdx; }
uint32_t m_rowIdx
Definition docnode.h:1202

References m_rowIdx.

◆ rowSpan()

uint32_t DocHtmlCell::rowSpan ( ) const

Definition at line 1797 of file docnode.cpp.

1798{
1799 for (const auto &attr : attribs())
1800 {
1801 if (attr.name.lower()=="rowspan")
1802 {
1803 return attr.value.toUInt();
1804 }
1805 }
1806 return 0;
1807}

References attribs().

Referenced by DocHtmlTable::computeTableGrid(), and LatexDocVisitor::operator()().

◆ setColumnIndex()

void DocHtmlCell::setColumnIndex ( uint32_t idx)
inlineprivate

Definition at line 1197 of file docnode.h.

1197{ m_colIdx = idx; }

References m_colIdx.

Referenced by DocHtmlTable::computeTableGrid().

◆ setRowIndex()

void DocHtmlCell::setRowIndex ( uint32_t idx)
inlineprivate

Definition at line 1196 of file docnode.h.

1196{ m_rowIdx = idx; }

References m_rowIdx.

Referenced by DocHtmlTable::computeTableGrid().

◆ valignment()

DocHtmlCell::Valignment DocHtmlCell::valignment ( ) const

Definition at line 1859 of file docnode.cpp.

1860{
1861 for (const auto &attr : attribs())
1862 {
1863 QCString attrName = attr.name.lower();
1864 QCString attrValue = attr.value.lower();
1865 if (attrName=="valign")
1866 {
1867 if (attrValue=="top")
1868 return Top;
1869 else if (attrValue=="bottom")
1870 return Bottom;
1871 else if (attrValue=="middle")
1872 return Middle;
1873 else return Middle;
1874 }
1875 }
1876 return Middle;
1877}

References attribs(), Bottom, Middle, and Top.

Referenced by LatexDocVisitor::operator()().

Friends And Related Symbol Documentation

◆ DocHtmlTable

friend class DocHtmlTable
friend

Definition at line 1174 of file docnode.h.

References DocHtmlTable.

Referenced by DocHtmlTable.

Member Data Documentation

◆ m_attribs

HtmlAttribList DocHtmlCell::m_attribs
private

Definition at line 1201 of file docnode.h.

Referenced by attribs(), and DocHtmlCell().

◆ m_colIdx

uint32_t DocHtmlCell::m_colIdx = static_cast<uint32_t>(-1)
private

Definition at line 1203 of file docnode.h.

Referenced by columnIndex(), and setColumnIndex().

◆ m_isFirst

bool DocHtmlCell::m_isFirst = false
private

Definition at line 1199 of file docnode.h.

Referenced by isFirst(), and markFirst().

◆ m_isHeading

bool DocHtmlCell::m_isHeading = false
private

Definition at line 1198 of file docnode.h.

Referenced by DocHtmlCell(), and isHeading().

◆ m_isLast

bool DocHtmlCell::m_isLast = false
private

Definition at line 1200 of file docnode.h.

Referenced by isLast(), and markLast().

◆ m_rowIdx

uint32_t DocHtmlCell::m_rowIdx = static_cast<uint32_t>(-1)
private

Definition at line 1202 of file docnode.h.

Referenced by rowIndex(), and setRowIndex().


The documentation for this class was generated from the following files: