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

Root node of a text fragment. More...

#include <src/docnode.h>

Inheritance diagram for DocText:
Collaboration diagram for DocText:

Public Member Functions

 DocText (DocParser *parser)
void parse ()
bool empty () 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

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

Root node of a text fragment.

Definition at line 1308 of file docnode.h.

Constructor & Destructor Documentation

◆ DocText()

DocText::DocText ( DocParser * parser)
inline

Definition at line 1311 of file docnode.h.

1311: DocCompoundNode(parser,nullptr) {}
DocCompoundNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:141
DocParser * parser()
Definition docnode.h:97

References DocCompoundNode::DocCompoundNode(), and DocNode::parser().

Referenced by validatingParseText().

Member Function Documentation

◆ empty()

bool DocText::empty ( ) const
inline

Definition at line 1313 of file docnode.h.

1313{ return children().empty(); }
DocNodeList & children()
Definition docnode.h:143
bool empty() const
checks whether the container is empty
Definition growvector.h:140

References DocCompoundNode::children(), and GrowVector< T >::empty().

◆ parse()

void DocText::parse ( )

Definition at line 6163 of file docnode.cpp.

6164{
6165 AUTO_TRACE();
6166 auto ns = AutoNodeStack(parser(),thisVariant());
6168
6169 Token tok = parser()->tokenizer.lex();
6170 while (!tok.is_any_of(TokenRetval::TK_NONE, TokenRetval::TK_EOF)) // get the next token
6171 {
6172 switch(tok.value())
6173 {
6174 case TokenRetval::TK_WORD:
6176 break;
6177 case TokenRetval::TK_WHITESPACE:
6178 children().append<DocWhiteSpace>(parser(),thisVariant(),parser()->context.token->chars);
6179 break;
6180 case TokenRetval::TK_SYMBOL:
6181 {
6182 HtmlEntityMapper::SymType s = DocSymbol::decodeSymbol(parser()->context.token->name);
6184 {
6185 children().append<DocSymbol>(parser(),thisVariant(),s);
6186 }
6187 else
6188 {
6189 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"Unsupported symbol '{}' found",
6190 parser()->context.token->name);
6191 }
6192 }
6193 break;
6194 case TokenRetval::TK_COMMAND_AT:
6195 // fall through
6196 case TokenRetval::TK_COMMAND_BS:
6197 switch (Mappers::cmdMapper->map(parser()->context.token->name))
6198 {
6201 break;
6204 break;
6207 break;
6210 break;
6213 break;
6216 break;
6219 break;
6222 break;
6225 break;
6229 break;
6234 break;
6237 break;
6240 break;
6243 break;
6246 break;
6249 break;
6252 break;
6255 break;
6256 default:
6257 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"Unexpected command '{}' found",
6258 parser()->context.token->name);
6259 break;
6260 }
6261 break;
6262 default:
6263 warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"Unexpected token {}",
6264 tok.to_string());
6265 break;
6266 }
6267 tok = parser()->tokenizer.lex();
6268 }
6269
6271
6272}
AutoNodeStack(DocParser *parser, DocNodeVariant *node)
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
DocTokenizer tokenizer
DocParserContext context
void handleUnclosedStyleCommands()
static HtmlEntityMapper::SymType decodeSymbol(const DString &symName)
Definition docnode.cpp:158
void setStateText()
TOKEN_SPECIFICATIONS RETVAL_SPECIFICATIONS const char * to_string() const
TokenRetval value() const
bool is_any_of(ARGS... args) const
DString chars
DString name
#define AUTO_TRACE(...)
Definition docnode.cpp:51
#define warn_doc_error(file, line, fmt,...)
Definition message.h:112
const Mapper< CommandType > * cmdMapper
TokenInfo * token
Definition docparser_p.h:94

References DocNodeList::append(), AUTO_TRACE, AutoNodeStack::AutoNodeStack(), TokenInfo::chars, DocCompoundNode::children(), CMD_AMP, CMD_AT, CMD_BSLASH, CMD_DCOLON, CMD_DOLLAR, CMD_EQUAL, CMD_EXCLAMATION, CMD_GREATER, CMD_HASH, CMD_LESS, CMD_MDASH, CMD_MINUS, CMD_NDASH, CMD_PERCENT, CMD_PLUS, CMD_PUNT, CMD_QUESTION, CMD_QUOTE, Mappers::cmdMapper, DocParser::context, DocSymbol::decodeSymbol(), DocParser::handleUnclosedStyleCommands(), Token::is_any_of(), DocTokenizer::lex(), TokenInfo::name, DocNode::parser(), DocTokenizer::setStateText(), HtmlEntityMapper::Sym_Amp, HtmlEntityMapper::Sym_At, HtmlEntityMapper::Sym_BSlash, HtmlEntityMapper::Sym_Dollar, HtmlEntityMapper::Sym_Dot, HtmlEntityMapper::Sym_DoubleColon, HtmlEntityMapper::Sym_Equal, HtmlEntityMapper::Sym_Exclam, HtmlEntityMapper::Sym_Greater, HtmlEntityMapper::Sym_Hash, HtmlEntityMapper::Sym_Less, HtmlEntityMapper::Sym_Minus, HtmlEntityMapper::Sym_Percent, HtmlEntityMapper::Sym_Plus, HtmlEntityMapper::Sym_Quest, HtmlEntityMapper::Sym_Quot, HtmlEntityMapper::Sym_Unknown, DocNode::thisVariant(), Token::to_string(), DocParserContext::token, DocParser::tokenizer, Token::value(), and warn_doc_error.


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