diff options
author | Kevin Chabowski <kevin@kch42.de> | 2014-05-24 01:39:33 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2014-05-24 01:39:33 +0200 |
commit | 84d815f4e006e02521759070bb89025dab80b219 (patch) | |
tree | 418a03f0b8be181cb29230ad5e808d3213b4d3cb /tests | |
parent | fdbe2e9521aa54ec6e0b70c1cb0f532248e531e4 (diff) | |
download | ste-84d815f4e006e02521759070bb89025dab80b219.tar.gz ste-84d815f4e006e02521759070bb89025dab80b219.tar.bz2 ste-84d815f4e006e02521759070bb89025dab80b219.zip |
Added scoping.
ste:mktag generated tags now have an own scope. They even resemble
closures, since they inherit their parent scope.
A lot of work was done to keep this compatible with older programs.
However:
* Templates that relied on the non-scoping behavior of tags will probably
fail.
* Since $ste->vars is no longer an actual array, things like
$ste->vars["foo"]["bar"] = "baz"
are no longer possible! A single field access will still work:
$ste->vars["foo"] = "bar"
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_closure/.gitignore | 3 | ||||
-rw-r--r-- | tests/test_closure/code.php | 5 | ||||
-rw-r--r-- | tests/test_closure/test.tpl | 8 | ||||
-rw-r--r-- | tests/test_closure/want | 1 | ||||
-rw-r--r-- | tests/test_mktag/test.tpl | 3 | ||||
-rw-r--r-- | tests/test_recursive/.gitignore | 3 | ||||
-rw-r--r-- | tests/test_recursive/code.php | 5 | ||||
-rw-r--r-- | tests/test_recursive/test.tpl | 11 | ||||
-rw-r--r-- | tests/test_recursive/want | 1 | ||||
-rw-r--r-- | tests/test_scoping/.gitignore | 3 | ||||
-rw-r--r-- | tests/test_scoping/code.php | 5 | ||||
-rw-r--r-- | tests/test_scoping/test.tpl | 6 | ||||
-rw-r--r-- | tests/test_scoping/want | 0 |
13 files changed, 52 insertions, 2 deletions
diff --git a/tests/test_closure/.gitignore b/tests/test_closure/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_closure/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_closure/code.php b/tests/test_closure/code.php new file mode 100644 index 0000000..de8c553 --- /dev/null +++ b/tests/test_closure/code.php @@ -0,0 +1,5 @@ +<?php + +function test_func($ste) { + +} diff --git a/tests/test_closure/test.tpl b/tests/test_closure/test.tpl new file mode 100644 index 0000000..c13bd5a --- /dev/null +++ b/tests/test_closure/test.tpl @@ -0,0 +1,8 @@ +<ste:mktag name="initfoo"> + <ste:set var="x"><ste:tagcontent /></ste:set> + <ste:mktag name="foo"> + <ste:calc>$x + <ste:tagcontent /></ste:calc> + </ste:mktag> +</ste:mktag> +<ste:initfoo>10</ste:initfoo> +<ste:foo>20</ste:foo>
\ No newline at end of file diff --git a/tests/test_closure/want b/tests/test_closure/want new file mode 100644 index 0000000..64bb6b7 --- /dev/null +++ b/tests/test_closure/want @@ -0,0 +1 @@ +30 diff --git a/tests/test_mktag/test.tpl b/tests/test_mktag/test.tpl index c381ef4..c446206 100644 --- a/tests/test_mktag/test.tpl +++ b/tests/test_mktag/test.tpl @@ -1,11 +1,10 @@ <ste:mktag name="double"><ste:calc>2 * <ste:tagcontent /></ste:calc></ste:mktag> <ste:mktag name="foo" mandatory="a|b"> - <ste:set var="b">$_tag_parameters[b]</ste:set><ste:comment>Ugly hack, since STE does no scoping...</ste:comment> <ste:for counter="i" start="0" stop="$_tag_parameters[a]"> <ste:if> <ste:even>$i</ste:even> <ste:then><ste:double>$i</ste:double></ste:then> - <ste:else>$b</ste:else> + <ste:else>$_tag_parameters[b]</ste:else> </ste:if> </ste:for> </ste:mktag> diff --git a/tests/test_recursive/.gitignore b/tests/test_recursive/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_recursive/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_recursive/code.php b/tests/test_recursive/code.php new file mode 100644 index 0000000..4ca3852 --- /dev/null +++ b/tests/test_recursive/code.php @@ -0,0 +1,5 @@ +<?php + +function test_func($ste) { + $ste->mute_runtime_errors = false; +} diff --git a/tests/test_recursive/test.tpl b/tests/test_recursive/test.tpl new file mode 100644 index 0000000..bea3934 --- /dev/null +++ b/tests/test_recursive/test.tpl @@ -0,0 +1,11 @@ +<ste:mktag name="fac" mandatory="n"> + <ste:if> + ~{$_tag_parameters[n]|eq|0} + <ste:then>1</ste:then> + <ste:else> + <ste:set var="nextn"><ste:calc>$_tag_parameters[n] - 1</ste:calc></ste:set> + <ste:calc><ste:fac n="$nextn" /> * $_tag_parameters[n]</ste:calc> + </ste:else> + </ste:if> +</ste:mktag> +<ste:fac n="10" />
\ No newline at end of file diff --git a/tests/test_recursive/want b/tests/test_recursive/want new file mode 100644 index 0000000..3fbd4a8 --- /dev/null +++ b/tests/test_recursive/want @@ -0,0 +1 @@ +3628800 diff --git a/tests/test_scoping/.gitignore b/tests/test_scoping/.gitignore new file mode 100644 index 0000000..de2a41b --- /dev/null +++ b/tests/test_scoping/.gitignore @@ -0,0 +1,3 @@ +have +*.ast +*.transc.php diff --git a/tests/test_scoping/code.php b/tests/test_scoping/code.php new file mode 100644 index 0000000..de8c553 --- /dev/null +++ b/tests/test_scoping/code.php @@ -0,0 +1,5 @@ +<?php + +function test_func($ste) { + +} diff --git a/tests/test_scoping/test.tpl b/tests/test_scoping/test.tpl new file mode 100644 index 0000000..25a46e7 --- /dev/null +++ b/tests/test_scoping/test.tpl @@ -0,0 +1,6 @@ +<ste:mktag name="foo"> + <ste:set var="bla">!</ste:set> +</ste:mktag> + +<ste:foo /> +$bla
\ No newline at end of file diff --git a/tests/test_scoping/want b/tests/test_scoping/want new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/test_scoping/want |