StrBufAppendPrintf(Target, "<pre>WARNING: \ninvalid value in SV-Hash at %s!\n</pre>", Token->pName);
}
}
+ else
+ lprintf(1, "didn't find Handler [%s] (in '%s' line %ld); "
+ " [%s]\n",
+ Token->pName,
+ ChrPtr(Token->FileName),
+ Token->Line,
+ ChrPtr(Token->FlatToken));
+
}
int CompareSubstToToken(TemplateParam *ParamToCompare, TemplateParam *ParamToLookup)
TemplateParam *Param;
WCTemplateToken *NewToken = (WCTemplateToken*)malloc(sizeof(WCTemplateToken));
+ NewToken->FileName = pTmpl->FileName; /* to print meaningfull log messages... */
NewToken->Flags = 0;
NewToken->Line = Line + 1;
NewToken->pTokenStart = pTmplStart;
ChrPtr(pTmpl->FileName),
Token->Line,
ChrPtr(Token->FlatToken));
+ return 0;
}
Cond = (ConditionalStruct *) vConditional;
* \brief Display a variable-substituted template
* \param templatename template file to load
*/
-void DoTemplate(const char *templatename, long len, void *Context, StrBuf *Target, int ContextType)
+void DoTemplate(const char *templatename, long len, StrBuf *Target, void *Context, int ContextType)
{
HashList *Static;
HashList *StaticLocal;
HashList *StaticList;
int AdditionalParams;
int ContextType;
+ int XPectContextType;
RetrieveHashlistFunc GetHash;
HashDestructorFunc Destructor;
SubTemplFunc DoSubTemplate;
Tokens->Params[0]->Start,
Tokens->Params[0]->len,
&vIt)) {
- lprintf(1, "unknown Iterator [%s] (in line %ld); "
+ lprintf(1, "unknown Iterator [%s] (in '%s' line %ld); "
" [%s]\n",
Tokens->Params[0]->Start,
+ ChrPtr(Tokens->FileName),
Tokens->Line,
ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
- "<pre>\nunknown Iterator [%s] (in line %ld); \n"
+ "<pre>\nunknown Iterator [%s] (in '%s' line %ld); \n"
" [%s]\n</pre>",
Tokens->Params[0]->Start,
+ ChrPtr(Tokens->FileName),
Tokens->Line,
ChrPtr(Tokens->FlatToken));
return;
It = (HashIterator*) vIt;
if (Tokens->nParameters < It->AdditionalParams + 2) {
- lprintf(1, "Iterator [%s] (in line %ld); "
+ lprintf(1, "Iterator [%s] (in '%s' line %ld); "
"doesn't work with %ld params [%s]\n",
Tokens->Params[0]->Start,
+ ChrPtr(Tokens->FileName),
Tokens->Line,
Tokens->nParameters,
ChrPtr(Tokens->FlatToken));
StrBufAppendPrintf(
Target,
- "<pre>Iterator [%s] \n(in line %ld);\n"
+ "<pre>Iterator [%s] \n(in '%s' line %ld);\n"
"doesn't work with %ld params \n[%s]\n</pre>",
Tokens->Params[0]->Start,
+ ChrPtr(Tokens->FileName),
Tokens->Line,
Tokens->nParameters,
ChrPtr(Tokens->FlatToken));
return;
}
+ if ((It->XPectContextType != CTX_NONE) &&
+ (It->XPectContextType != ContextType)) {
+ lprintf(1, "Iterator [%s] (in '%s' line %ld); "
+ "requires context of type %ld, have %ld [%s]\n",
+ Tokens->pName,
+ ChrPtr(Tokens->FileName),
+ Tokens->Line,
+ It->XPectContextType,
+ ContextType,
+ ChrPtr(Tokens->FlatToken));
+ StrBufAppendPrintf(
+ Target,
+ "<pre>\nIterator [%s] (in '%s' line %ld);"
+ " requires context of type %ld, have %ld!\n[%s]\n</pre>\n",
+ Tokens->pName,
+ ChrPtr(Tokens->FileName),
+ Tokens->Line,
+ It->XPectContextType,
+ ContextType,
+ ChrPtr(Tokens->FlatToken));
+ return ;
+
+ }
+
+
+
+
if (It->StaticList == NULL)
- List = It->GetHash(Tokens);
+ List = It->GetHash(Target, nArgs, Tokens, Context, ContextType);
else
List = It->StaticList;
(oddeven) ? "odd" : "even");
svprintf(HKEY("ITERATE:KEY"), WCS_STRING, "%s", Key);
- It->DoSubTemplate(SubBuf, vContext, Tokens);
+ if (It->DoSubTemplate != NULL)
+ It->DoSubTemplate(SubBuf, vContext, Tokens);
DoTemplate(Tokens->Params[1]->Start,
Tokens->Params[1]->len,
- vContext, SubBuf,
+ SubBuf, vContext,
It->ContextType);
StrBufAppendBuf(Target, SubBuf, 0);
RetrieveHashlistFunc GetHash,
SubTemplFunc DoSubTempl,
HashDestructorFunc Destructor,
- int ContextType)
+ int ContextType,
+ int XPectContextType)
{
HashIterator *It = (HashIterator*)malloc(sizeof(HashIterator));
It->StaticList = StaticList;
It->DoSubTemplate = DoSubTempl;
It->Destructor = Destructor;
It->ContextType = ContextType;
+ It->XPectContextType = XPectContextType;
Put(Iterators, Name, len, It, NULL);
}
StrBuf *Headline = NewStrBuf();
DoTemplate(Tokens->Params[1]->Start,
Tokens->Params[1]->len,
- Context,
Headline,
+ Context,
ContextType);
SVPutBuf("BOXTITLE", Headline, 0);
}
- DoTemplate(HKEY("beginbox"), Context, Target, ContextType);
+ DoTemplate(HKEY("beginbox"), Target, Context, ContextType);
DoTemplate(Tokens->Params[0]->Start,
Tokens->Params[0]->len,
- Context,
Target,
+ Context,
ContextType);
- DoTemplate(HKEY("endbox"), Context, Target, ContextType);
+ DoTemplate(HKEY("endbox"), Target, Context, ContextType);
}
void tmpl_do_tabbed(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, void *Context, int ContextType)
if (Tokens->Params[i * 2]->len > 0) {
DoTemplate(Tokens->Params[i * 2]->Start,
Tokens->Params[i * 2]->len,
- Context,
TabNames[i],
+ Context,
ContextType);
}
else {
DoTemplate(Tokens->Params[i * 2 + 1]->Start,
Tokens->Params[i * 2 + 1]->len,
- Context,
Target,
+ Context,
ContextType);
StrEndTab(Target, i, nTabs);
}