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

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 HtmlAttribList & attribs () 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)
DocNodeList & children ()
const DocNodeList & children () const
Public Member Functions inherited from DocNode
 DocNode (DocParser *parser, DocNodeVariant *parent)
 ~DocNode ()=default
DocNodeVariant * parent ()
const DocNodeVariant * parent () const
DocNodeVariant * thisVariant ()
const DocNodeVariant * thisVariant () const
void setThisVariant (DocNodeVariant *thisVariant)
DocParser * parser ()
const DocParser * parser () 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 ,
  Requirement
}
Protected Member Functions inherited from DocNode
void setInsidePreformatted (bool p)

Detailed Description

Node representing a HTML table cell.

Definition at line 1197 of file docnode.h.

Member Enumeration Documentation

◆ Alignment

Enumerator
Left 
Right 
Center 

Definition at line 1201 of file docnode.h.

◆ Valignment

Enumerator
Top 
Middle 
Bottom 

Definition at line 1202 of file docnode.h.

Constructor & Destructor Documentation

◆ DocHtmlCell()

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

Definition at line 1203 of file docnode.h.

1203 :
DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:141
bool isHeading() const
Definition docnode.h:1205
const HtmlAttribList & attribs() const
Definition docnode.h:1210
HtmlAttribList m_attribs
Definition docnode.h:1226
bool m_isHeading
Definition docnode.h:1223
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 2036 of file docnode.cpp.

2037{
2038 for (const auto &attr : attribs())
2039 {
2040 DString attrName = attr.name.lower();
2041 DString attrValue = attr.value.lower();
2042 if (attrName=="align")
2043 {
2044 if (attrValue=="center")
2045 return Center;
2046 else if (attrValue=="right")
2047 return Right;
2048 else return Left;
2049 }
2050 else if (attrName=="class" && attrValue.startsWith("markdowntable"))
2051 {
2052 if (attrValue=="markdowntableheadcenter")
2053 return Center;
2054 else if (attrValue=="markdowntableheadright")
2055 return Right;
2056 else if (attrValue=="markdowntableheadleft")
2057 return Left;
2058 else if (attrValue=="markdowntableheadnone")
2059 return Center;
2060 else if (attrValue=="markdowntablebodycenter")
2061 return Center;
2062 else if (attrValue=="markdowntablebodyright")
2063 return Right;
2064 else if (attrValue=="markdowntablebodyleft")
2065 return Left;
2066 else if (attrValue=="markdowntablebodynone")
2067 return Left;
2068 else return Left;
2069 }
2070 }
2071 return Left;
2072}
bool startsWith(const char *s) const
Definition dstring.h:600

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

Referenced by LatexDocVisitor::operator()().

◆ attribs()

const HtmlAttribList & DocHtmlCell::attribs ( ) const
inline

◆ colSpan()

uint32_t DocHtmlCell::colSpan ( ) const

Definition at line 2024 of file docnode.cpp.

2025{
2026 for (const auto &attr : attribs())
2027 {
2028 if (attr.name.lower()=="colspan")
2029 {
2030 return std::max(1u,attr.value.toUInt());
2031 }
2032 }
2033 return 1;
2034}

References attribs().

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

◆ columnIndex()

uint32_t DocHtmlCell::columnIndex ( ) const
inline

Definition at line 1214 of file docnode.h.

1214{ return m_colIdx; }
uint32_t m_colIdx
Definition docnode.h:1228

References m_colIdx.

◆ isFirst()

bool DocHtmlCell::isFirst ( ) const
inline

Definition at line 1206 of file docnode.h.

1206{ return m_isFirst; }
bool m_isFirst
Definition docnode.h:1224

References m_isFirst.

Referenced by parse(), and parseXml().

◆ isHeading()

◆ isLast()

bool DocHtmlCell::isLast ( ) const
inline

Definition at line 1207 of file docnode.h.

1207{ return m_isLast; }
bool m_isLast
Definition docnode.h:1225

References m_isLast.

Referenced by LatexDocVisitor::operator()().

◆ markFirst()

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

Definition at line 1208 of file docnode.h.

1208{ m_isFirst=v; }

References m_isFirst.

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

◆ markLast()

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

Definition at line 1209 of file docnode.h.

1209{ m_isLast=v; }

References m_isLast.

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

◆ parse()

Token DocHtmlCell::parse ( )

Definition at line 1944 of file docnode.cpp.

1945{
1946 AUTO_TRACE();
1947 Token retval = Token::make_RetVal_OK();
1948 auto ns = AutoNodeStack(parser(),thisVariant());
1949
1950 // parse one or more paragraphs
1951 bool isFirst=true;
1952 DocPara *par=nullptr;
1953 do
1954 {
1955 children().append<DocPara>(parser(),thisVariant());
1956 par = children().get_last<DocPara>();
1957 if (isFirst) { par->markFirst(); isFirst=false; }
1958 retval=par->parse();
1959 if (retval.is(TokenRetval::TK_HTMLTAG))
1960 {
1961 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1962 if (tagId==HtmlTagType::HTML_TD && parser()->context.token->endTag) // found </td> tag
1963 {
1964 retval = Token::make_TK_NEWPARA(); // ignore the tag
1965 }
1966 else if (tagId==HtmlTagType::HTML_TH && parser()->context.token->endTag) // found </th> tag
1967 {
1968 retval = Token::make_TK_NEWPARA(); // ignore the tag
1969 }
1970 }
1971 }
1972 while (retval.is_any_of(TokenRetval::TK_NEWPARA,TokenRetval::RetVal_EndParBlock));
1973 if (par) par->markLast();
1974
1975 return retval;
1976}
DocNodeList & children()
Definition docnode.h:143
bool isFirst() const
Definition docnode.h:1206
DocNodeVariant * thisVariant()
Definition docnode.h:92
void append(Args &&... args)
Append a new DocNodeVariant to the list by constructing it with type T and parameters Args.
Definition docnode.h:1404
T * get_last()
Returns a pointer to the last element in the list if that element exists and holds a T,...
Definition docnode.h:1415
void markFirst(bool v=true)
Definition docnode.h:1094
Token parse()
Definition docnode.cpp:5779
void markLast(bool v=true)
Definition docnode.h:1095
bool is(TokenRetval rv) const
bool is_any_of(ARGS... args) const
HtmlTagType
Definition cmdmapper.h:174
#define AUTO_TRACE(...)
Definition docnode.cpp:53
const Mapper< HtmlTagType > * htmlTagMapper

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

Referenced by DocHtmlRow::parse().

◆ parseXml()

Token DocHtmlCell::parseXml ( )

Definition at line 1978 of file docnode.cpp.

1979{
1980 AUTO_TRACE();
1981 Token retval = Token::make_RetVal_OK();
1982 auto ns = AutoNodeStack(parser(),thisVariant());
1983
1984 // parse one or more paragraphs
1985 bool isFirst=true;
1986 DocPara *par=nullptr;
1987 do
1988 {
1989 children().append<DocPara>(parser(),thisVariant());
1990 par = children().get_last<DocPara>();
1991 if (isFirst) { par->markFirst(); isFirst=false; }
1992 retval=par->parse();
1993 if (retval.is(TokenRetval::TK_HTMLTAG))
1994 {
1995 HtmlTagType tagId=Mappers::htmlTagMapper->map(parser()->context.token->name);
1996 if (tagId==HtmlTagType::XML_ITEM && parser()->context.token->endTag) // found </item> tag
1997 {
1998 retval = Token::make_TK_NEWPARA(); // ignore the tag
1999 }
2000 else if (tagId==HtmlTagType::XML_DESCRIPTION && parser()->context.token->endTag) // found </description> tag
2001 {
2002 retval = Token::make_TK_NEWPARA(); // ignore the tag
2003 }
2004 }
2005 }
2006 while (retval.is(TokenRetval::TK_NEWPARA));
2007 if (par) par->markLast();
2008
2009 return retval;
2010}

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

Referenced by DocHtmlRow::parseXml().

◆ rowIndex()

uint32_t DocHtmlCell::rowIndex ( ) const
inline

Definition at line 1213 of file docnode.h.

1213{ return m_rowIdx; }
uint32_t m_rowIdx
Definition docnode.h:1227

References m_rowIdx.

◆ rowSpan()

uint32_t DocHtmlCell::rowSpan ( ) const

Definition at line 2012 of file docnode.cpp.

2013{
2014 for (const auto &attr : attribs())
2015 {
2016 if (attr.name.lower()=="rowspan")
2017 {
2018 return attr.value.toUInt();
2019 }
2020 }
2021 return 0;
2022}

References attribs().

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

◆ setColumnIndex()

void DocHtmlCell::setColumnIndex ( uint32_t idx)
inlineprivate

Definition at line 1222 of file docnode.h.

1222{ m_colIdx = idx; }

References m_colIdx.

Referenced by DocHtmlTable::computeTableGrid().

◆ setRowIndex()

void DocHtmlCell::setRowIndex ( uint32_t idx)
inlineprivate

Definition at line 1221 of file docnode.h.

1221{ m_rowIdx = idx; }

References m_rowIdx.

Referenced by DocHtmlTable::computeTableGrid().

◆ valignment()

DocHtmlCell::Valignment DocHtmlCell::valignment ( ) const

Definition at line 2074 of file docnode.cpp.

2075{
2076 for (const auto &attr : attribs())
2077 {
2078 DString attrName = attr.name.lower();
2079 DString attrValue = attr.value.lower();
2080 if (attrName=="valign")
2081 {
2082 if (attrValue=="top")
2083 return Top;
2084 else if (attrValue=="bottom")
2085 return Bottom;
2086 else if (attrValue=="middle")
2087 return Middle;
2088 else return Middle;
2089 }
2090 }
2091 return Middle;
2092}

References attribs(), Bottom, DString::lower(), Middle, and Top.

Referenced by LatexDocVisitor::operator()().

◆ DocHtmlTable

friend class DocHtmlTable
friend

Definition at line 1199 of file docnode.h.

References DocHtmlTable.

Referenced by DocHtmlTable.

Member Data Documentation

◆ m_attribs

HtmlAttribList DocHtmlCell::m_attribs
private

Definition at line 1226 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 1228 of file docnode.h.

Referenced by columnIndex(), and setColumnIndex().

◆ m_isFirst

bool DocHtmlCell::m_isFirst = false
private

Definition at line 1224 of file docnode.h.

Referenced by isFirst(), and markFirst().

◆ m_isHeading

bool DocHtmlCell::m_isHeading = false
private

Definition at line 1223 of file docnode.h.

Referenced by DocHtmlCell(), and isHeading().

◆ m_isLast

bool DocHtmlCell::m_isLast = false
private

Definition at line 1225 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 1227 of file docnode.h.

Referenced by rowIndex(), and setRowIndex().


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