summaryrefslogtreecommitdiff
path: root/example/templates/transc/custom_tags.tpl.php
diff options
context:
space:
mode:
authorKevin Chabowski <kevin@kch42.de>2012-06-27 21:09:07 +0200
committerKevin Chabowski <kevin@kch42.de>2012-06-27 21:09:07 +0200
commitd0b7317e10254490acbe748d1d8c1e04aaf8be6b (patch)
tree19d484bee311b488aa75212ce0f31d6ae29b4308 /example/templates/transc/custom_tags.tpl.php
parent06eea058aac1b3edbd526474ce71bfe47194fb46 (diff)
downloadste-d0b7317e10254490acbe748d1d8c1e04aaf8be6b.tar.gz
ste-d0b7317e10254490acbe748d1d8c1e04aaf8be6b.tar.bz2
ste-d0b7317e10254490acbe748d1d8c1e04aaf8be6b.zip
Added new Tags to the standard library.
* ste:in_array checks, if a value is in an array * ste:join joins an array with a glue string * ste:split splits a string with a delimiter to an array * ste:array_add adds an element to an array.
Diffstat (limited to 'example/templates/transc/custom_tags.tpl.php')
-rw-r--r--example/templates/transc/custom_tags.tpl.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/example/templates/transc/custom_tags.tpl.php b/example/templates/transc/custom_tags.tpl.php
new file mode 100644
index 0000000..b92f8a3
--- /dev/null
+++ b/example/templates/transc/custom_tags.tpl.php
@@ -0,0 +1,65 @@
+<?php $transcompile_fx = function($ste)
+{
+ $outputstack = array('');
+ $outputstack_i = 0;
+ $outputstack[] = '';
+ $outputstack_i++;
+ $outputstack[$outputstack_i] .= "array|value|max";
+ $outputstack_i--;
+ $mandatory_params = explode('|', array_pop($outputstack));
+ $tag_fx = function($ste, $params, $sub) use ($mandatory_params)
+ {
+ $outputstack = array(); $outputstack_i = 0;$ste->vars['_tag_parameters'] = $params;
+ foreach($mandatory_params as $mp)
+ {
+ if(!isset($params[$mp]))
+ throw new \ste\RuntimeError("$mp missing in <ste:" . "foreach_limit" . ">.");
+ }$foreachloop_4f4e9064144651_57761022_arrayvar = @$ste->vars["_tag_parameters"]["array"];
+ $foreachloop_4f4e9064144651_57761022_valuevar = @$ste->vars["_tag_parameters"]["value"];
+ $foreachloop_4f4e9064144651_57761022_countervar = "i";
+ $foreachloop_4f4e9064144651_57761022_array = $ste->get_var_by_name($foreachloop_4f4e9064144651_57761022_arrayvar);
+ if(!is_array($foreachloop_4f4e9064144651_57761022_array))
+ $foreachloop_4f4e9064144651_57761022_array = array();
+ $foreachloop_4f4e9064144651_57761022_counter = -1;
+ foreach($foreachloop_4f4e9064144651_57761022_array as $foreachloop_4f4e9064144651_57761022_key => $foreachloop_4f4e9064144651_57761022_value)
+ {
+ try
+ {
+ $foreachloop_4f4e9064144651_57761022_counter++;
+ $ste->set_var_by_name($foreachloop_4f4e9064144651_57761022_countervar, $foreachloop_4f4e9064144651_57761022_counter);
+ $ste->set_var_by_name($foreachloop_4f4e9064144651_57761022_valuevar, $foreachloop_4f4e9064144651_57761022_value);
+
+ $outputstack[] = "";
+ $outputstack_i++;
+ $outputstack[$outputstack_i] .= (($ste->get_var_by_name("i")) >= ($ste->get_var_by_name("_tag_parameters[max]"))) ? 'yes' : '';
+ $outputstack_i--;
+ if($ste->evalbool(array_pop($outputstack)))
+ {
+ throw new \ste\BreakException();
+
+ }
+ $outputstack[] = "";
+ $outputstack_i++;
+ $outputstack[$outputstack_i] .= "\n\t\t\t" . @$ste->vars["_tag_parameters"]["counter"];
+ $outputstack_i--;
+ if($ste->evalbool(array_pop($outputstack)))
+ {
+ $outputstack[] = '';
+ $outputstack_i++;
+ $outputstack[$outputstack_i] .= @$ste->vars["i"];
+ $outputstack_i--;
+ $ste->set_var_by_name(@$ste->vars["_tag_parameters"]["counter"], array_pop($outputstack));
+
+ }
+ $outputstack[$outputstack_i] .= $sub($ste);
+ }
+ catch(\ste\BreakException $e) { break; }
+ catch(\ste\ContinueException $e) { continue; }
+
+ }
+
+ return array_pop($outputstack);
+ };
+ $ste->register_tag("foreach_limit", $tag_fx);
+ return array_pop($outputstack);
+}; ?> \ No newline at end of file