17 #ifndef ZNC_TEMPLATE_H 18 #define ZNC_TEMPLATE_H 20 #include <znc/zncconfig.h> 45 return HandleVar(Tmpl, sName, sArgs, sOutput);
64 void Parse(
const CString& sLine);
78 bool bReverse, std::vector<CTemplate*>* pRows)
79 : m_bReverse(bReverse),
83 m_uFilePosition(uFilePos),
97 if (m_uRowIndex == 0) {
100 return --m_uRowIndex;
111 std::vector<CTemplate*>*
GetRows() {
return m_pvRows; }
122 unsigned int m_uRowIndex;
125 std::vector<CTemplate*>*
136 m_sFileName(sFileName),
141 m_vspTagHandlers() {}
143 CTemplate(
const std::shared_ptr<CTemplateOptions>& Options,
151 m_spOptions(Options),
152 m_vspTagHandlers() {}
161 m_vspTagHandlers.push_back(spTagHandler);
166 return m_pParent->GetTagHandlers();
169 return m_vspTagHandlers;
177 CString ExpandFile(
const CString& sFilename,
bool bFromInc =
false);
178 bool SetFile(
const CString& sFileName);
180 void SetPath(
const CString& sPath);
184 void PrependPath(
const CString& sPath,
bool bIncludesOnly =
false);
185 void AppendPath(
const CString& sPath,
bool bIncludesOnly =
false);
186 void RemovePath(
const CString& sPath);
188 bool PrintString(
CString& sRet);
189 bool Print(std::ostream& oOut);
190 bool Print(
const CString& sFileName, std::ostream& oOut);
191 bool ValidIf(
const CString& sArgs);
192 bool ValidExpr(
const CString& sExpr);
193 bool IsTrue(
const CString& sName);
194 bool HasLoop(
const CString& sName);
198 std::vector<CTemplate*>* GetLoop(
const CString& sName);
199 void DelCurLoopContext();
209 std::list<std::pair<CString, bool>> m_lsbPaths;
210 std::map<CString, std::vector<CTemplate*>> m_mvLoops;
211 std::vector<CTemplateLoopContext*> m_vLoopContexts;
212 std::shared_ptr<CTemplateOptions> m_spOptions;
213 std::vector<std::shared_ptr<CTemplateTagHandler>> m_vspTagHandlers;
216 #endif // !ZNC_TEMPLATE_H const CString & GetName() const
Definition: Template.h:107
CString::EEscape GetEscapeTo() const
Definition: Template.h:68
virtual bool HandleTag(CTemplate &Tmpl, const CString &sName, const CString &sArgs, CString &sOutput)
Definition: Template.h:38
std::vector< CTemplate * > * GetRows()
Definition: Template.h:111
CTemplate * GetNextRow()
Definition: Template.h:112
Definition: Template.h:57
virtual ~CTemplateTagHandler()
Definition: Template.h:31
Definition: Template.h:75
void SetFilePosition(unsigned int u)
Definition: Template.h:102
CTemplateTagHandler()
Definition: Template.h:30
CTemplate()
Definition: Template.h:131
CTemplateLoopContext(unsigned long uFilePos, const CString &sLoopName, bool bReverse, std::vector< CTemplate * > *pRows)
Definition: Template.h:77
EEscape
Definition: ZNCString.h:70
CTemplate(const CString &sFileName)
Definition: Template.h:133
Definition: Template.h:28
void SetHasData(bool b=true)
Definition: Template.h:92
virtual bool HandleValue(CTemplate &Tmpl, CString &sValue, const MCString &msOptions)
Definition: Template.h:48
Definition: Template.h:129
unsigned int IncRowIndex()
Definition: Template.h:95
String class that is used inside ZNC.
Definition: ZNCString.h:68
unsigned int DecRowIndex()
Definition: Template.h:96
unsigned long GetFilePosition() const
Definition: Template.h:108
const CString & GetFileName() const
Definition: Template.h:204
size_t GetRowCount()
Definition: Template.h:110
CTemplate * GetCurRow()
Definition: Template.h:113
CTemplateOptions()
Definition: Template.h:59
CString::EEscape GetEscapeFrom() const
Definition: Template.h:67
A dictionary for strings.
Definition: ZNCString.h:595
void SetRowIndex(unsigned int u)
Definition: Template.h:94
void AddTagHandler(std::shared_ptr< CTemplateTagHandler > spTagHandler)
Class for implementing custom tags in subclasses.
Definition: Template.h:160
std::vector< std::shared_ptr< CTemplateTagHandler > > & GetTagHandlers()
Definition: Template.h:164
virtual ~CTemplateOptions()
Definition: Template.h:62
CTemplate(const std::shared_ptr< CTemplateOptions > &Options, CTemplate *pParent=nullptr)
Definition: Template.h:143
virtual bool HandleVar(CTemplate &Tmpl, const CString &sName, const CString &sArgs, CString &sOutput)
Definition: Template.h:33
virtual bool HandleIf(CTemplate &Tmpl, const CString &sName, const CString &sArgs, CString &sOutput)
Definition: Template.h:43
bool HasData() const
Definition: Template.h:106
void SetName(const CString &s)
Definition: Template.h:93
virtual ~CTemplateLoopContext()
Definition: Template.h:86
unsigned int GetRowIndex() const
Definition: Template.h:109