<?php

require_once dirname(__FILE__) . "/permutation.php";
// Writes to: regression_tests/blocks/correct/delimiter_with_loop.in
$loopTypes = altMaster(altSlave("{foreach 1..10 as \$b}\n", "{\$b = 1}\n{while \$b <= 10}\n"), altSlave("{/foreach}\n", "  {\$b++}\n{/while}\n"));
$list = perm("{foreach 1..4 as \$a", alt("", " offset 1", " limit 1", " offset 1 limit 1"), "}\n", indent(perm("{\$a}\n", "{delimiter", alt("", " modulo 3"), "}\n", indent(perm($loopTypes, "  :{\$b}:\n", $loopTypes->slaves[1]), "  "), "{/delimiter}\n"), "  "), "{/foreach}\n", "============\n");
$dir = dirname(__FILE__) . "/../regression_tests/";
$a = app("blocks/correct/delimiter_with_loop.in", $argv);
$i = 1;
$a->output("{var \$a = 0, \$b = 0}\n");
do {
    $num = sprintf("%04d", $i);
    $str = $list->generate();
    $a->output($str);
    //    $a->store( "mock:2:2: Unknown block <{$name}>.\n" .
    //               "\n" .
    //               "{{$name}}\n" .
    //               " ^\n",
    //               $fileOut );
    ++$i;
} while ($list->increase());
$a->close();
<?php

require_once dirname(__FILE__) . "/permutation.php";
// Writes to: regression_tests/foreach/correct/nested_with_delimiter_*.in
$blockStart = altMaster(altSlave("{\$i = 0}\n{foreach \$foo as \$bar}\n", "{\$num = 0}{\$i = 0}\n{while \$num<3}\n{\$bar = \$num}\n{\$num++}\n", "{\$i = 0}\n{if \$foo[1]}\n"), altSlave("{++\$i}\n{/foreach}\n", "{++\$i}\n{/while}\n", "{/if}\n"));
$blockEnd = $blockStart->slaves[1];
$innerBlocks1 = alt("{delimiter}\n" . "    {\$i}:~~~~delim~~~~\n" . "{/delimiter}\n", "{if \$bar}\n" . "    {\$i}:[if]\$bar is true[/if]\n" . "{else}\n" . "    {\$i}:[if]\$bar is false[/if]\n" . "{/if}\n", "{switch \$bar}\n" . "{case 1}\n" . "    {\$i}:[switch]1[/switch]\n" . "{/case}\n" . "{case 2}\n" . "    {\$i}:[switch]2[/switch]\n" . "{/case}\n" . "{default}\n" . "    {\$i}:[switch]default({\$bar})[/switch]\n" . "{/default}\n" . "{/switch}\n");
$delimBlocks = alt("{delimiter}\n" . "    {\$i}:====delim====\n" . "{/delimiter}\n" . "{delimiter modulo 2}\n" . "    {\$i}:____delim____\n" . "{/delimiter}\n");
$blockStart2 = clone $blockStart;
$blockEnd2 = $blockStart2->slaves[1];
$innerBlocks2 = clone $innerBlocks1;
/*$innerBlocks2->replace( "\$foo", "\$foo2" );
$innerBlocks2->replace( "\$bar", "\$bar2" );
$innerBlocks2->replace( "\$num", "\$num2" );
$innerBlocks2->replace( "{\$i}", "{\$i}:{\$j}" );
$innerBlocks2->replace( "{\$i = 0}", "{\$j = 0}" );
$innerBlocks2->replace( "~~~~delim~~~~", "~~delim~~" );*/
$outerBlocks2 = perm($blockStart2, indent(perm($innerBlocks2, $delimBlocks), "    "), $blockEnd2);
$outerBlocks2->replace("\$foo", "\$foo2");
$outerBlocks2->replace("\$bar", "\$bar2");
$outerBlocks2->replace("\$num", "\$num2");
$outerBlocks2->replace("{\$i}", "{\$i}:{\$j}");
$outerBlocks2->replace("{\$i = 0}", "{\$j = 0}");
$outerBlocks2->replace("{++\$i}", "{++\$j}");
$outerBlocks2->replace("~~~~delim~~~~", "~~delim~~");
$outerBlocks = perm("\\{%num%\n", "{foreach 1..1 as \$blackhole}\n", indent(perm($blockStart, indent(perm($innerBlocks1, $outerBlocks2), "    "), $blockEnd), "    "), "{/foreach}\n", "\\}\n");
$list = perm($outerBlocks);
$dir = dirname(__FILE__) . "/../regression_tests/";
$a = app("", $argv);
$i = 1;
$top = "{var \$foo = array( 0, 1, 3 ), \$foo2 = array( '', 'foo' ), \$bar = 0, \$bar2 = 0, \$num = 0, \$num2 = 0, \$i = 0, \$j = 0}\n";