From ae4ff5a3dcfdf291052e20d8c651f8d8abc95613 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Wed, 30 Oct 2024 16:45:05 -0700 Subject: [PATCH] Made the set tag work to local variables. Moved tests to their own directory. --- Tag.cpp | 2 +- __set.cpp | 43 +++++++++++++++--------- test1.jet => tests/test1.jet | 0 testdb.jet => tests/testdb.jet | 0 testfor.jet => tests/testfor.jet | 0 testinclude.jet => tests/testinclude.jet | 0 testjet.jet => tests/testjet.jet | 0 tests/testscope.jet | 8 +++++ testtag.jet => tests/testtag.jet | 0 testvar.jet => tests/testvar.jet | 2 +- 10 files changed, 37 insertions(+), 18 deletions(-) rename test1.jet => tests/test1.jet (100%) rename testdb.jet => tests/testdb.jet (100%) rename testfor.jet => tests/testfor.jet (100%) rename testinclude.jet => tests/testinclude.jet (100%) rename testjet.jet => tests/testjet.jet (100%) create mode 100755 tests/testscope.jet rename testtag.jet => tests/testtag.jet (100%) rename testvar.jet => tests/testvar.jet (97%) 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