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