diff options
author | Kevin Chabowski <kevin@kch42.de> | 2012-06-27 21:09:07 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2012-06-27 21:09:07 +0200 |
commit | d0b7317e10254490acbe748d1d8c1e04aaf8be6b (patch) | |
tree | 19d484bee311b488aa75212ce0f31d6ae29b4308 /example/templates/transc/custom_tags.tpl.php | |
parent | 06eea058aac1b3edbd526474ce71bfe47194fb46 (diff) | |
download | ste-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.php | 65 |
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 |