diff --git a/Tag.h b/Tag.h index 5213887..b95bf2e 100644 --- a/Tag.h +++ b/Tag.h @@ -18,6 +18,7 @@ namespace jet { coreutils::ZString name; coreutils::ZString container; coreutils::ZString container2; + Tag *parent; protected: bool hasContainer; @@ -28,7 +29,6 @@ namespace jet { void copyContainer(coreutils::ZString &in, coreutils::MString &out); Global &global; - Tag *parent; coreutils::MString &parentOut; coreutils::MString out; diff --git a/__set.cpp b/__set.cpp index 7a1b143..1292738 100644 --- a/__set.cpp +++ b/__set.cpp @@ -25,6 +25,8 @@ namespace jet { global.variables[variables["name"]] = Operand(variables["expr"]).string; else if(variables["scope"] == "local") parent->variables[variables["name"]] = Operand(variables["expr"]).string; + else if(variables["scope"] == "parent") + parent->parent->variables[variables["name"]] = Operand(variables["expr"]).string; } else if(hasContainer) { processContainer(container); if(evaluate) { @@ -32,17 +34,23 @@ namespace jet { global.variables[variables["name"]] = out; else if(variables["scope"] == "local") parent->variables[variables["name"]] = out; + else if(variables["scope"] == "parent") + parent->parent->variables[variables["name"]] = out; } else { if(!variableDefined("scope") || (variables["scope"] == "global")) global.variables[variables["name"]] = container; else if(variables["scope"] == "local") parent->variables[variables["name"]] = container; + else if(variables["scope"] == "parent") + parent->parent->variables[variables["name"]] = container; } } else { if(!variableDefined("scope") || (variables["scope"] == "global")) global.variables[variables["name"]] = variables["value"]; else if(variables["scope"] == "local") parent->variables[variables["name"]] = variables["value"]; + else if(variables["scope"] == "parent") + parent->parent->variables[variables["name"]] = variables["value"]; } }