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

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

1
Tag.h
View File

@ -45,6 +45,7 @@ namespace jet {
bool cleanWhitespace = false; bool cleanWhitespace = false;
void renderVariableName(coreutils::ZString &variable, coreutils::MString &name, coreutils::MString &modifier); 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); void storeVariable(coreutils::ZString variable);
private: private:

View File

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