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

Node representing an anchor. More...

#include <src/docnode.h>

Inheritance diagram for DocAnchor:
Collaboration diagram for DocAnchor:

Public Member Functions

 DocAnchor (DocParser *parser, DocNodeVariant *parent, const DString &id, bool newAnchor)
DString anchor () const
DString file () const
const HtmlAttribListattribs () 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 Attributes

DString m_anchor
DString m_file
HtmlAttribList m_attribs

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 an anchor.

Definition at line 228 of file docnode.h.

Constructor & Destructor Documentation

◆ DocAnchor()

DocAnchor::DocAnchor ( DocParser * parser,
DocNodeVariant * parent,
const DString & id,
bool newAnchor )

Definition at line 216 of file docnode.cpp.

217{
218 if (id.empty())
219 {
221 return;
222 }
223
224 const CitationManager &ct = CitationManager::instance();
225 DString anchorPrefix = ct.anchorPrefix();
226 if (id.left(anchorPrefix.length()) == anchorPrefix)
227 {
228 const CiteInfo *cite = ct.find(id.mid(anchorPrefix.length()));
229 if (cite)
230 {
231 m_file = convertNameToFile(ct.fileName(),false,true);
232 m_anchor = id;
233 }
234 else
235 {
236 warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"Invalid cite anchor id '{}'",id);
237 m_anchor = "invalid";
238 m_file = "invalid";
239 }
240 }
241 else if (newAnchor) // found <a name="label">
242 {
243 m_anchor = id;
244 }
245 else // found \anchor label
246 {
247 const SectionInfo *sec = SectionManager::instance().find(id);
248 if (sec)
249 {
250 //printf("Found anchor %s\n",qPrint(id));
251 m_file = sec->fileName();
252 m_anchor = sec->label();
253 }
254 else
255 {
256 warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"Invalid anchor id '{}'",id);
257 m_anchor = "invalid";
258 m_file = "invalid";
259 }
260 }
261}
const CiteInfo * find(const DString &label) const
Return the citation info for a given label.
Definition cite.cpp:106
static CitationManager & instance()
Definition cite.cpp:90
DString anchorPrefix() const
Definition cite.cpp:131
DString fileName() const
Definition cite.cpp:126
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151
DString m_file
Definition docnode.h:239
DString m_anchor
Definition docnode.h:238
DocNode(DocParser *parser, DocNodeVariant *parent)
Definition docnode.h:84
DocParser * parser()
Definition docnode.h:97
DocNodeVariant * parent()
Definition docnode.h:89
DocTokenizer tokenizer
DocParserContext context
int getLineNr() const
const T * find(const std::string &key) const
Definition linkedmap.h:47
DString fileName() const
Definition section.h:74
DString label() const
Definition section.h:69
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:179
#define warn_doc_error(file, line, fmt,...)
Definition message.h:112
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2863

References CitationManager::anchorPrefix(), DocParser::context, convertNameToFile(), DocNode::DocNode(), CitationManager::fileName(), DocParserContext::fileName, SectionInfo::fileName(), CitationManager::find(), LinkedMap< T, Hash, KeyEqual, Map >::find(), DocTokenizer::getLineNr(), CitationManager::instance(), SectionManager::instance(), SectionInfo::label(), DString::length(), m_anchor, m_file, DocNode::parent(), DocNode::parser(), DocParser::tokenizer, and warn_doc_error.

Member Function Documentation

◆ anchor()

◆ attribs()

const HtmlAttribList & DocAnchor::attribs ( ) const
inline

Definition at line 235 of file docnode.h.

235{ return m_attribs; }
HtmlAttribList m_attribs
Definition docnode.h:240

References m_attribs.

Referenced by HtmlDocVisitor::operator()().

◆ file()

DString DocAnchor::file ( ) const
inline

Member Data Documentation

◆ m_anchor

DString DocAnchor::m_anchor
private

Definition at line 238 of file docnode.h.

Referenced by anchor(), and DocAnchor().

◆ m_attribs

HtmlAttribList DocAnchor::m_attribs
private

Definition at line 240 of file docnode.h.

Referenced by attribs().

◆ m_file

DString DocAnchor::m_file
private

Definition at line 239 of file docnode.h.

Referenced by DocAnchor(), and file().


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