From d0b7317e10254490acbe748d1d8c1e04aaf8be6b Mon Sep 17 00:00:00 2001 From: Kevin Chabowski Date: Wed, 27 Jun 2012 21:09:07 +0200 Subject: 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. --- example/templates/transc/articles.html.php | 172 +++++++++ example/templates/transc/custom_tags.tpl.php | 65 ++++ example/templates/transc/master.html.php | 503 +++++++++++++++++++++++++++ 3 files changed, 740 insertions(+) create mode 100644 example/templates/transc/articles.html.php create mode 100644 example/templates/transc/custom_tags.tpl.php create mode 100644 example/templates/transc/master.html.php (limited to 'example') diff --git a/example/templates/transc/articles.html.php b/example/templates/transc/articles.html.php new file mode 100644 index 0000000..d52658c --- /dev/null +++ b/example/templates/transc/articles.html.php @@ -0,0 +1,172 @@ +load("custom_tags.tpl"); + $outputstack[$outputstack_i] .= $ste->load("master.html"); + $blockname_4feb57c8eb53c0_39108239 = "content"; + $ste->blocks['4feb57c8eb54f8.57715029'] = array_pop($outputstack); + $ste->blockorder[] = '4feb57c8eb54f8.57715029'; + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "

Some Articles

\n\t"; + $parameters_4feb57c8eb55d1_49937129 = array(); + $parameters_4feb57c8eb55d1_49937129['array'] = "articles"; + $parameters_4feb57c8eb55d1_49937129['value'] = "article"; + $parameters_4feb57c8eb55d1_49937129['max'] = "3"; + $parameters_4feb57c8eb55d1_49937129['counter'] = "i"; + $outputstack[$outputstack_i] .= $ste->call_tag('foreach_limit', $parameters_4feb57c8eb55d1_49937129, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "

"; + $parameters_4feb57c8eb59c3_59434363 = array(); + $outputstack[$outputstack_i] .= $ste->call_tag('uppercase', $parameters_4feb57c8eb59c3_59434363, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $parameters_4feb57c8eb5a98_71645476 = array(); + $outputstack[$outputstack_i] .= $ste->call_tag('escape', $parameters_4feb57c8eb5a98_71645476, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= @$ste->vars["article"]["title"]; + return array_pop($outputstack); + }); + return array_pop($outputstack); + }); + $outputstack[$outputstack_i] .= "

\n\t\t
Author: "; + $parameters_4feb57c8eb5f92_71020272 = array(); + $outputstack[$outputstack_i] .= $ste->call_tag('escape', $parameters_4feb57c8eb5f92_71020272, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= @$ste->vars["article"]["author"]; + return array_pop($outputstack); + }); + $outputstack[$outputstack_i] .= "
\n\t\t
"; + $parameters_4feb57c8eb62b8_11002450 = array(); + $parameters_4feb57c8eb62b8_11002450['timestamp'] = @$ste->vars["article"]["timestamp"]; + $outputstack[$outputstack_i] .= $ste->call_tag('date', $parameters_4feb57c8eb62b8_11002450, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "%d. %h. %Y, %H:%M:%S"; + return array_pop($outputstack); + }); + $outputstack[$outputstack_i] .= "
\n\t\t
\n\t\t\t"; + $outputstack[] = ""; + $outputstack_i++; + $outputstack[$outputstack_i] .= (($ste->get_var_by_name("i")) == ("0")) ? 'yes' : ''; + $outputstack_i--; + if($ste->evalbool(array_pop($outputstack))) + { + $outputstack[$outputstack_i] .= "\n\t\t\t\t\t" . @$ste->vars["article"]["full"]; + + } + else + { + $outputstack[$outputstack_i] .= "\n\t\t\t\t\t" . @$ste->vars["article"]["excerpt"]; + + } + $outputstack[$outputstack_i] .= "
\n\t\t
\n\t"; + return array_pop($outputstack); + }); + $outputstack[] = ''; + $outputstack_i++; + $parameters_4feb57c8eb72f3_12728934 = array(); + $parameters_4feb57c8eb72f3_12728934['array'] = "articles"; + $outputstack[$outputstack_i] .= $ste->call_tag('arraylen', $parameters_4feb57c8eb72f3_12728934, function($ste) { return ''; }); + $outputstack_i--; + $ste->set_var_by_name("articles_n", array_pop($outputstack)); + $outputstack[] = ""; + $outputstack_i++; + $outputstack[$outputstack_i] .= ((@$ste->vars["articles_n"]) > ("3")) ? 'yes' : ''; + $outputstack_i--; + if($ste->evalbool(array_pop($outputstack))) + { + $outputstack[$outputstack_i] .= "

There are more articles.

\n\t\t"; + + } + $outputstack[$outputstack_i] .= "

Some more useless demo stuff...

\n\t\t

Counting from 10 to 0...

\n\t\t

but take only the even ones and multiply by 5...

\n\t\t"; + $forloop_4feb57c8eb7965_88913250_start = "10"; + $forloop_4feb57c8eb7965_88913250_stop = "0"; + $forloop_4feb57c8eb7965_88913250_countername = "i"; + for($forloop_4feb57c8eb7965_88913250_counter = $forloop_4feb57c8eb7965_88913250_start; $forloop_4feb57c8eb7965_88913250_counter >= $forloop_4feb57c8eb7965_88913250_stop; $forloop_4feb57c8eb7965_88913250_counter += -1) + { + try + { + $ste->set_var_by_name($forloop_4feb57c8eb7965_88913250_countername, $forloop_4feb57c8eb7965_88913250_counter); + $outputstack[] = ""; + $outputstack_i++; + $outputstack[] = ''; + $outputstack_i++; + $outputstack[$outputstack_i] .= @$ste->vars["i"]; + $outputstack_i--; + $tmp_even = array_pop($outputstack); + $outputstack[$outputstack_i] .= (is_numeric($tmp_even) and ($tmp_even % 2 == 0)) ? 'yes' : ''; + $outputstack_i--; + if($ste->evalbool(array_pop($outputstack))) + { + $outputstack[] = ''; + $outputstack_i++; + $outputstack[$outputstack_i] .= @$ste->vars["i"] . " * 5"; + $outputstack_i--; + $outputstack[$outputstack_i] .= $ste->calc(array_pop($outputstack)); + $outputstack[$outputstack_i] .= "
\n\t\t\t\t"; + + } + + } + catch(\ste\BreakException $e) { break; } + catch(\ste\ContinueException $e) { continue; } + + } + + $outputstack[$outputstack_i] .= "

Repeat some text...

\n\t\t"; + $parameters_4feb57c8eb86f4_27000372 = array(); + $parameters_4feb57c8eb86f4_27000372['n'] = "10"; + $outputstack[$outputstack_i] .= $ste->call_tag('repeat', $parameters_4feb57c8eb86f4_27000372, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "

Bla

\n\t\t"; + return array_pop($outputstack); + }); + $outputstack[$outputstack_i] .= "

Get a variable's content dynamically

\n\t\t"; + $outputstack[$outputstack_i] .= $ste->get_var_by_name(@$ste->vars["foo"] . "[" . @$ste->vars["bar"] . "]");$outputstack[$outputstack_i] .= "

We will call ste:repeat with a non-numerical value for n here to see the handling of a RuntimeError

\n\t\t"; + $parameters_4feb57c8eb8be8_11772552 = array(); + $parameters_4feb57c8eb8be8_11772552['n'] = "lol"; + $outputstack[$outputstack_i] .= $ste->call_tag('repeat', $parameters_4feb57c8eb8be8_11772552, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "

Bla

\n\t\t"; + return array_pop($outputstack); + }); + $parameters_4feb57c8eb8e64_48510077 = array(); + $parameters_4feb57c8eb8e64_48510077['array'] = "hai"; + $parameters_4feb57c8eb8e64_48510077['delim'] = ","; + $outputstack[$outputstack_i] .= $ste->call_tag('split', $parameters_4feb57c8eb8e64_48510077, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "a,b,c,d,e"; + return array_pop($outputstack); + }); + $parameters_4feb57c8eb91f2_76021324 = array(); + $parameters_4feb57c8eb91f2_76021324['array'] = "hai"; + $outputstack[$outputstack_i] .= $ste->call_tag('join', $parameters_4feb57c8eb91f2_76021324, function($ste) + { + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "
"; + return array_pop($outputstack); + }); + $ste->blocks[$blockname_4feb57c8eb53c0_39108239] = array_pop($outputstack); + if(array_search($blockname_4feb57c8eb53c0_39108239, $ste->blockorder) === FALSE) + $ste->blockorder[] = $blockname_4feb57c8eb53c0_39108239; + $outputstack = array(''); + $outputstack_i = 0; + return array_pop($outputstack); +}; ?> \ No newline at end of file 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 @@ +vars['_tag_parameters'] = $params; + foreach($mandatory_params as $mp) + { + if(!isset($params[$mp])) + throw new \ste\RuntimeError("$mp missing in ."); + }$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 diff --git a/example/templates/transc/master.html.php b/example/templates/transc/master.html.php new file mode 100644 index 0000000..1bee843 --- /dev/null +++ b/example/templates/transc/master.html.php @@ -0,0 +1,503 @@ + ste\TextNode Object + ( + [text] => + + + + [tpl] => master.html + [offset] => 0 + ) + + [1] => ste\TagNode Object + ( + [name] => if + [params] => Array + ( + ) + + [sub] => Array + ( + [0] => ste\VariableNode Object + ( + [name] => title + [arrayfields] => Array + ( + ) + + [tpl] => master.html + [offset] => 206 + ) + + [1] => ste\TagNode Object + ( + [name] => then + [params] => Array + ( + ) + + [sub] => Array + ( + [0] => ste\VariableNode Object + ( + [name] => title + [arrayfields] => Array + ( + ) + + [tpl] => master.html + [offset] => 222 + ) + + [1] => ste\TextNode Object + ( + [text] => - example + [tpl] => master.html + [offset] => 227 + ) + + ) + + [tpl] => master.html + [offset] => 211 + ) + + [2] => ste\TagNode Object + ( + [name] => else + [params] => Array + ( + ) + + [sub] => Array + ( + [0] => ste\TextNode Object + ( + [text] => example + [tpl] => master.html + [offset] => 258 + ) + + ) + + [tpl] => master.html + [offset] => 248 + ) + + ) + + [tpl] => master.html + [offset] => 197 + ) + + [2] => ste\TextNode Object + ( + [text] => + [tpl] => master.html + [offset] => 285 + ) + + [3] => ste\TextNode Object + ( + [text] => + + + +

example

+ +
+ + [tpl] => master.html + [offset] => 384 + ) + + [4] => ste\TagNode Object + ( + [name] => block + [params] => Array + ( + [name] => Array + ( + [0] => ste\TextNode Object + ( + [text] => content + [tpl] => master.html + [offset] => 626 + ) + + ) + + ) + + [sub] => Array + ( + [0] => ste\TextNode Object + ( + [text] => Default content. + + [tpl] => master.html + [offset] => 635 + ) + + ) + + [tpl] => master.html + [offset] => 609 + ) + + [5] => ste\TextNode Object + ( + [text] =>
+
+ + [tpl] => master.html + [offset] => 670 + ) + + [6] => ste\TagNode Object + ( + [name] => block + [params] => Array + ( + [name] => Array + ( + [0] => ste\TextNode Object + ( + [text] => otherstuff + [tpl] => master.html + [offset] => 721 + ) + + ) + + ) + + [sub] => Array + ( + [0] => ste\TextNode Object + ( + [text] =>

List of users

+ + [tpl] => master.html + [offset] => 733 + ) + + [1] => ste\TextNode Object + ( + [text] =>
    + + [tpl] => master.html + [offset] => 820 + ) + + [2] => ste\TagNode Object + ( + [name] => foreach + [params] => Array + ( + [array] => Array + ( + [0] => ste\TextNode Object + ( + [text] => users + [tpl] => master.html + [offset] => 853 + ) + + ) + + [value] => Array + ( + [0] => ste\TextNode Object + ( + [text] => user + [tpl] => master.html + [offset] => 867 + ) + + ) + + ) + + [sub] => Array + ( + [0] => ste\TextNode Object + ( + [text] =>
  • + [tpl] => master.html + [offset] => 975 + ) + + [3] => ste\VariableNode Object + ( + [name] => user + [arrayfields] => Array + ( + [0] => Array + ( + [0] => ste\TextNode Object + ( + [text] => name + [tpl] => master.html + [offset] => 983 + ) + + ) + + ) + + [tpl] => master.html + [offset] => 978 + ) + + [4] => ste\TextNode Object + ( + [text] => ( + [tpl] => master.html + [offset] => 988 + ) + + [5] => ste\VariableNode Object + ( + [name] => user + [arrayfields] => Array + ( + [0] => Array + ( + [0] => ste\TextNode Object + ( + [text] => username + [tpl] => master.html + [offset] => 996 + ) + + ) + + ) + + [tpl] => master.html + [offset] => 991 + ) + + [6] => ste\TextNode Object + ( + [text] => )
  • + + [tpl] => master.html + [offset] => 1005 + ) + + ) + + [tpl] => master.html + [offset] => 833 + ) + + [3] => ste\TextNode Object + ( + [text] =>
+ + [tpl] => master.html + [offset] => 1030 + ) + + ) + + [tpl] => master.html + [offset] => 704 + ) + + [7] => ste\TextNode Object + ( + [text] =>
+ + + + [tpl] => master.html + [offset] => 1054 + ) + +) +*/ + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "\n\n\n\t"; + $outputstack[] = ""; + $outputstack_i++; + $outputstack[$outputstack_i] .= @$ste->vars["title"]; + $outputstack_i--; + if($ste->evalbool(array_pop($outputstack))) + { + $outputstack[$outputstack_i] .= @$ste->vars["title"] . " - example"; + + } + else + { + $outputstack[$outputstack_i] .= "example"; + + } + $outputstack[$outputstack_i] .= "" . "\n\t\n\n\n\t

example

\n\t\n\t
\n\t\t"; + $blockname_4f4e94ddd41342_39491438 = "content"; + $ste->blocks['4f4e94ddd41470.10353359'] = array_pop($outputstack); + $ste->blockorder[] = '4f4e94ddd41470.10353359'; + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "Default content.\n\t\t"; + $ste->blocks[$blockname_4f4e94ddd41342_39491438] = array_pop($outputstack); + if(array_search($blockname_4f4e94ddd41342_39491438, $ste->blockorder) === FALSE) + $ste->blockorder[] = $blockname_4f4e94ddd41342_39491438; + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "
\n\t
\n\t\t"; + $blockname_4f4e94ddd415e6_09352068 = "otherstuff"; + $ste->blocks['4f4e94ddd416b2.98760934'] = array_pop($outputstack); + $ste->blockorder[] = '4f4e94ddd416b2.98760934'; + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "

List of users

\n\t\t\t" . "
    \n\t\t\t\t"; + $foreachloop_4f4e94ddd417b7_50245786_arrayvar = "users"; + $foreachloop_4f4e94ddd417b7_50245786_valuevar = "user"; + $foreachloop_4f4e94ddd417b7_50245786_array = $ste->get_var_by_name($foreachloop_4f4e94ddd417b7_50245786_arrayvar); + if(!is_array($foreachloop_4f4e94ddd417b7_50245786_array)) + $foreachloop_4f4e94ddd417b7_50245786_array = array(); + foreach($foreachloop_4f4e94ddd417b7_50245786_array as $foreachloop_4f4e94ddd417b7_50245786_key => $foreachloop_4f4e94ddd417b7_50245786_value) + { + try + { + $ste->set_var_by_name($foreachloop_4f4e94ddd417b7_50245786_valuevar, $foreachloop_4f4e94ddd417b7_50245786_value); + + $outputstack[$outputstack_i] .= "
  • vars["user"]["online"]; + $outputstack_i--; + if($ste->evalbool(array_pop($outputstack))) + { + $outputstack[$outputstack_i] .= "online"; + + } + else + { + $outputstack[$outputstack_i] .= "offline"; + + } + $outputstack[$outputstack_i] .= "\">" . @$ste->vars["user"]["name"] . " (" . @$ste->vars["user"]["username"] . ")
  • \n\t\t\t\t"; + + } + catch(\ste\BreakException $e) { break; } + catch(\ste\ContinueException $e) { continue; } + + } + + $outputstack[$outputstack_i] .= "
\n\t\t"; + $ste->blocks[$blockname_4f4e94ddd415e6_09352068] = array_pop($outputstack); + if(array_search($blockname_4f4e94ddd415e6_09352068, $ste->blockorder) === FALSE) + $ste->blockorder[] = $blockname_4f4e94ddd415e6_09352068; + $outputstack = array(''); + $outputstack_i = 0; + $outputstack[$outputstack_i] .= "
\n\n\n"; + return array_pop($outputstack); +}; ?> \ No newline at end of file -- cgit v1.2.3-70-g09d2