diff --git a/Tag.cpp b/Tag.cpp index 1e89d63..f46b95e 100644 --- a/Tag.cpp +++ b/Tag.cpp @@ -51,7 +51,7 @@ namespace jet { if(!finished) { coreutils::ZString keywordName = in.getTokenInclude("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"); if(in.ifNext("=\"")) { - variables[keywordName] = KeywordValue(in.getTokenExclude("\""), global, variables); + variables[keywordName] = KeywordValue(in.getTokenExclude("\""), global, parent->variables); } if(!in.ifNext("\"")) {} } diff --git a/__set.cpp b/__set.cpp index dbcdd15..ef814b6 100644 --- a/__set.cpp +++ b/__set.cpp @@ -17,22 +17,33 @@ namespace jet { throw coreutils::Exception("set tag cannot have both expr and value."); if(!variableDefined("expr") && !variableDefined("value") && !hasContainer) throw coreutils::Exception("set tag must have a value, expr or a container."); - if(!variableDefined("scope") || (variables["scope"] == "global")) { - if(variableDefined("expr")) { - if(variableDefined("eval")) - throw coreutils::Exception("Cannot use eval with expr."); - global.variables[variables["name"]] = Operand(variables["expr"]).string; - } else if(hasContainer) { - processContainer(container); - if(evaluate) { - global.variables[variables["name"]] = out; - } else { - global.variables[variables["name"]] = container; - } - } else - global.variables[variables["name"]] = variables["value"]; - } else { - + if(variableDefined("expr") && variableDefined("eval")) + throw coreutils::Exception("Cannot use eval with expr."); + + if(variableDefined("expr")) { + if(!variableDefined("scope") || (variables["scope"] == "global")) + global.variables[variables["name"]] = Operand(variables["expr"]).string; + else if(variables["scope"] == "local") + variables[variables["name"]] = Operand(variables["expr"]).string; + } else if(hasContainer) { + processContainer(container); + if(evaluate) { + if(!variableDefined("scope") || (variables["scope"] == "global")) + global.variables[variables["name"]] = out; + else if(variables["scope"] == "local") + variables[variables["name"]] = out; + } else { + if(!variableDefined("scope") || (variables["scope"] == "global")) + global.variables[variables["name"]] = container; + else if(variables["scope"] == "local") + variables[variables["name"]] = container; + } + } else { + if(!variableDefined("scope") || (variables["scope"] == "global")) + global.variables[variables["name"]] = variables["value"]; + else if(variables["scope"] == "local") + variables[variables["name"]] = variables["value"]; } + } } diff --git a/test1.jet b/tests/test1.jet similarity index 100% rename from test1.jet rename to tests/test1.jet diff --git a/testdb.jet b/tests/testdb.jet similarity index 100% rename from testdb.jet rename to tests/testdb.jet diff --git a/testfor.jet b/tests/testfor.jet similarity index 100% rename from testfor.jet rename to tests/testfor.jet diff --git a/testinclude.jet b/tests/testinclude.jet similarity index 100% rename from testinclude.jet rename to tests/testinclude.jet diff --git a/testjet.jet b/tests/testjet.jet similarity index 100% rename from testjet.jet rename to tests/testjet.jet diff --git a/tests/testscope.jet b/tests/testscope.jet new file mode 100755 index 0000000..2a7125a --- /dev/null +++ b/tests/testscope.jet @@ -0,0 +1,8 @@ +#!./jet-2.0 + + + #[testvar] + + -->#[ix]<-- + + diff --git a/testtag.jet b/tests/testtag.jet similarity index 100% rename from testtag.jet rename to tests/testtag.jet diff --git a/testvar.jet b/tests/testvar.jet similarity index 97% rename from testvar.jet rename to tests/testvar.jet index 69d8a7e..dbbc255 100755 --- a/testvar.jet +++ b/tests/testvar.jet @@ -1,4 +1,4 @@ -#!./jet-2.0 +#!../jet-2.0