PlaceholderParser: Simpler if / elsif / else / endif syntax.
{if cond1}{expr1}{elsif cond2}{expr2}{else}{expr3}{endif} could be written as {if cond1;expr1;elsif cond2;expr2;else;expr3;endif} the first semicolon after else is not manadtory, thus the following is valid {if cond1;expr1;elsif cond2;expr2;else expr3;endif} each expression could be also empty or contain multiple expressions: {if cond1;elsif cond2;else endif}
This commit is contained in:
parent
59d3683a79
commit
a53070f5e6
2 changed files with 42 additions and 8 deletions
tests/libslic3r
|
@ -245,10 +245,36 @@ SCENARIO("Placeholder parser variables", "[PlaceholderParser]") {
|
|||
"{size(myfloats)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "7");
|
||||
}
|
||||
SECTION("nested if with new variables 2, mixing }{ with ;") {
|
||||
std::string script =
|
||||
"{if 1 == 0;local myints = (5, 4, 3, 2, 1);else;local myfloats = (1., 2., 3., 4., 5., 6., 7.);endif}"
|
||||
"{size(myfloats)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "7");
|
||||
}
|
||||
SECTION("nested if with new variables, two level") {
|
||||
std::string script =
|
||||
"{if 1 == 1}{if 2 == 3}{nejaka / haluz}{else}{local myints = (6, 5, 4, 3, 2, 1)}{endif}{else}{if zase * haluz}{else}{local myfloats = (1., 2., 3., 4., 5., 6., 7.)}{endif}{endif}"
|
||||
"{size(myints)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "6");
|
||||
}
|
||||
SECTION("if with empty block and ;") {
|
||||
std::string script =
|
||||
"{if false;else;local myfloats = (1., 2., 3., 4., 5., 6., 7.);endif}"
|
||||
"{size(myfloats)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "7");
|
||||
}
|
||||
SECTION("nested if with new variables, two level, mixing }{ with ;") {
|
||||
std::string script =
|
||||
"{if 1 == 1;if 2 == 3;nejaka / haluz;else;local myints = (6, 5, 4, 3, 2, 1);endif;else;if zase * haluz;else;local myfloats = (1., 2., 3., 4., 5., 6., 7.);endif;endif}"
|
||||
"{size(myints)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "6");
|
||||
}
|
||||
SECTION("nested if with new variables, two level, ;, no semicolon after else") {
|
||||
std::string script =
|
||||
"{if 1 == 1;if 2 == 3;nejaka / haluz;else local myints = (6, 5, 4, 3, 2, 1);endif;else if zase * haluz;else local myfloats = (1., 2., 3., 4., 5., 6., 7.);endif;endif}"
|
||||
"{size(myints)}";
|
||||
REQUIRE(parser.process(script, 0, nullptr, nullptr, nullptr) == "6");
|
||||
}
|
||||
SECTION("if else completely empty") { REQUIRE(parser.process("{if false; elsif false; else; endif}", 0, nullptr, nullptr, nullptr) == ""); }
|
||||
SECTION("if else completely empty 2") { REQUIRE(parser.process("{if false; elsif false; else endif}", 0, nullptr, nullptr, nullptr) == ""); }
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue