fixed the for tag.

This commit is contained in:
barant 2025-01-09 07:49:11 -08:00
parent ebb6dc4ca9
commit 83321a2f43
3 changed files with 15 additions and 11 deletions

View File

@ -442,6 +442,9 @@ namespace jet {
return;
}
void Tag::storeVariable(coreutils::ZString variable, coreutils::MString value, coreutils::ZString scope) {
}
void Tag::storeVariable(coreutils::ZString variable) {
if(keywordDefined("expr")) {
if(!keywordDefined("scope") || (resolveKeyword("scope") == "global"))

1
Tag.h
View File

@ -45,6 +45,7 @@ namespace jet {
bool cleanWhitespace = false;
void renderVariableName(coreutils::ZString &variable, coreutils::MString &name, coreutils::MString &modifier);
void storeVariable(coreutils::ZString variable, coreutils::MString value, coreutils::ZString scope);
void storeVariable(coreutils::ZString variable);
private:

View File

@ -8,23 +8,23 @@ namespace jet {
double counter = 0.0f;
bool nameDefined = keywordDefined("name");
if(keywordDefined("start")) {
counter = keywords[resolveKeyword("start")].asDouble();
counter = resolveKeyword("start").asDouble();
keywords["start"].reset();
}
if(!keywordDefined("end"))
throw coreutils::Exception("for tag requires end keyword.");
if(!keywordDefined("step"))
throw coreutils::Exception("for tag requires step keyword.");
for(double ix = counter; ix <= variables[resolveKeyword("end")].asDouble(); ix += variables[resolveKeyword("step")].asDouble()) {
keywords[resolveKeyword("end")].reset();
keywords[resolveKeyword("step")].reset();
for(double ix = counter; ix <= resolveKeyword("end").asDouble(); ix += resolveKeyword("step").asDouble()) {
resolveKeyword("end").reset();
resolveKeyword("step").reset();
if(nameDefined) {
if(!keywordDefined("scope") || (keywords[resolveKeyword("scope")] == "global"))
global.variables[keywords[resolveKeyword("name")]] = ix;
else if(keywords[resolveKeyword("scope")] == "local")
this->local->variables[keywords[resolveKeyword("name")]] = ix;
else if(keywords[resolveKeyword("scope")] == "parent")
parent->local->variables[keywords[resolveKeyword("name")]] = ix;
if(!keywordDefined("scope") || (resolveKeyword("scope") == "global"))
global.variables[resolveKeyword("name")] = ix;
else if(resolveKeyword("scope") == "local")
this->local->variables[resolveKeyword("name")] = ix;
else if(resolveKeyword("scope") == "parent")
parent->local->variables[resolveKeyword("name")] = ix;
else
throw coreutils::Exception("scope value is not valid.");
}