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

Node representing a citation of some bibliographic reference. More...

#include <src/docnode.h>

Inheritance diagram for DocCite:
Collaboration diagram for DocCite:

Public Member Functions

 DocCite (DocParser *parser, DocNodeVariant *parent, const DString &target, const DString &context, CiteInfoOption opt)
DString file () const
DString relPath () const
DString ref () const
DString anchor () const
DString target () const
CiteInfoOption option () const
DString getText () 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 Attributes

DString m_file
DString m_relPath
DString m_ref
DString m_anchor
DString m_target
CiteInfoOption m_option

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 citation of some bibliographic reference.

Definition at line 244 of file docnode.h.

Constructor & Destructor Documentation

◆ DocCite()

DocCite::DocCite ( DocParser * parser,
DocNodeVariant * parent,
const DString & target,
const DString & context,
CiteInfoOption opt )

Definition at line 952 of file docnode.cpp.

953{
954 size_t numBibFiles = Config_getList(CITE_BIB_FILES).size();
955 //printf("DocCite::DocCite(target=%s)\n",qPrint(target));
956 ASSERT(!target.empty());
958 const CitationManager &ct = CitationManager::instance();
959 const CiteInfo *cite = ct.find(target);
960 //printf("cite=%p text='%s' numBibFiles=%d\n",cite,cite?qPrint(cite->text):"<null>",numBibFiles);
961 m_option = opt;
963 if (numBibFiles>0 && cite && !cite->text().empty()) // ref to citation
964 {
965 m_ref = "";
966 m_anchor = ct.anchorPrefix()+cite->label();
967 m_file = convertNameToFile(ct.fileName(),false,true);
968 //printf("CITE ==> m_text=%s,m_ref=%s,m_file=%s,m_anchor=%s\n",
969 // qPrint(m_text),qPrint(m_ref),qPrint(m_file),qPrint(m_anchor));
970 return;
971 }
972 if (numBibFiles==0)
973 {
974 warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"\\cite command found but no bib files specified via CITE_BIB_FILES!");
975 }
976 else if (cite==nullptr)
977 {
978 warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"unable to resolve reference to '{}' for \\cite command",
979 target);
980 }
981 else
982 {
983 warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"\\cite command to '{}' does not have an associated number",
984 target);
985 }
986}
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
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
DString m_file
Definition docnode.h:257
DString m_anchor
Definition docnode.h:260
DString m_ref
Definition docnode.h:259
DString m_relPath
Definition docnode.h:258
DString m_target
Definition docnode.h:261
DString target() const
Definition docnode.h:252
CiteInfoOption m_option
Definition docnode.h:262
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
#define Config_getList(name)
Definition config.h:38
#define ASSERT(x)
Definition message.h:142
#define warn_doc_error(file, line, fmt,...)
Definition message.h:112
virtual DString text() const =0
virtual DString label() const =0
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2864

References CitationManager::anchorPrefix(), ASSERT, Config_getList, DocParser::context, convertNameToFile(), DocNode::DocNode(), DString::empty(), CitationManager::fileName(), DocParserContext::fileName, CitationManager::find(), DocTokenizer::getLineNr(), CitationManager::instance(), CiteInfo::label(), m_anchor, m_file, m_option, m_ref, m_relPath, m_target, DocNode::parent(), DocNode::parser(), DocParserContext::relPath, target(), CiteInfo::text(), DocParser::tokenizer, and warn_doc_error.

Member Function Documentation

◆ anchor()

◆ file()

◆ getText()

DString DocCite::getText ( ) const

Definition at line 988 of file docnode.cpp.

989{
990 DString txt;
991 auto opt = m_option;
992 const CitationManager &ct = CitationManager::instance();
993 const CiteInfo *citeInfo = ct.find(m_target);
994
995 if (!opt.noPar()) txt += "[";
996
997 if (citeInfo)
998 {
999 if (opt.isNumber()) txt += citeInfo->text();
1000 else if (opt.isShortAuthor()) txt += citeInfo->shortAuthor();
1001 else if (opt.isYear()) txt += citeInfo->year();
1002 }
1003
1004 if (!opt.noPar()) txt += "]";
1005 return txt;
1006}
virtual DString shortAuthor() const =0
virtual DString year() const =0

References CitationManager::find(), CitationManager::instance(), m_option, m_target, CiteInfo::shortAuthor(), CiteInfo::text(), and CiteInfo::year().

Referenced by DocbookDocVisitor::operator()(), HtmlDocVisitor::operator()(), LatexDocVisitor::operator()(), ManDocVisitor::operator()(), PerlModDocVisitor::operator()(), PrintDocVisitor::operator()(), RTFDocVisitor::operator()(), and XmlDocVisitor::operator()().

◆ option()

◆ ref()

DString DocCite::ref ( ) const
inline

◆ relPath()

DString DocCite::relPath ( ) const
inline

Definition at line 249 of file docnode.h.

249{ return m_relPath; }

References m_relPath.

Referenced by HtmlDocVisitor::operator()().

◆ target()

Member Data Documentation

◆ m_anchor

DString DocCite::m_anchor
private

Definition at line 260 of file docnode.h.

Referenced by anchor(), and DocCite().

◆ m_file

DString DocCite::m_file
private

Definition at line 257 of file docnode.h.

Referenced by DocCite(), and file().

◆ m_option

CiteInfoOption DocCite::m_option
private

Definition at line 262 of file docnode.h.

Referenced by DocCite(), getText(), and option().

◆ m_ref

DString DocCite::m_ref
private

Definition at line 259 of file docnode.h.

Referenced by DocCite(), and ref().

◆ m_relPath

DString DocCite::m_relPath
private

Definition at line 258 of file docnode.h.

Referenced by DocCite(), and relPath().

◆ m_target

DString DocCite::m_target
private

Definition at line 261 of file docnode.h.

Referenced by DocCite(), getText(), and target().


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