X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=template.php;h=2a21975f13ef42e35f3e10da09b000ef0c877e01;hb=332683184a73f7c141132c20c715cd731687f835;hp=e386fe2ed6e7b52db94ab9eef12552202f7fe467;hpb=0829623c0e10d5cc83e12547387b5fa0abaf43e0;p=wfpl.git diff --git a/template.php b/template.php index e386fe2..2a21975 100644 --- a/template.php +++ b/template.php @@ -57,6 +57,11 @@ class tem { $this->keyval[$key] = $value; } + # like set() but appends + function append($key, $value) { + $this->keyval[$key] .= $value; + } + # clear a value. Functionally equivalent to set($key, '') but cleaner and more efficient function clear($key) { unset($this->keyval[$key]); @@ -67,10 +72,15 @@ class tem { return $this->keyval[$key]; } + # depricated (renamed show()) + function sub($sub_template_name) { + $this->show($sub_template_name); + } + # run the template engine on one of the sub-templates and append the result # to the keyval in the main array. See tem_test.php for an example of how # this can be used. - function sub($sub_template_name) { + function show($sub_template_name) { $this->keyval[$sub_template_name] .= template_run($this->sub_templates[$sub_template_name], $this->keyval); # after running a sub-template, clear its sub-templates @@ -130,16 +140,20 @@ class tem { } #repeat } + # like load() except you pass a string instead of a filename + function load_str($str) { + $this->template = ''; + $parents = array('top_level_subs' => array()); + $parent = 'top_level_subs'; + $this->_load($str, $this->template, $parents, $parent); + } + # This is useful when you have sub-templates that you want to mess with # before the main template is run. But can also be used to simply specify # the filename ahead of time. function load($filename) { $this->filename = $filename; - $tmp = read_whole_file($filename); - $this->template = ''; - $parents = array('top_level_subs' => array()); - $parent = 'top_level_subs'; - $this->_load($tmp, $this->template, $parents, $parent); + $this->load_str(read_whole_file($filename)); } # Run the template. Pass a filename, or a string, unless you've already @@ -173,19 +187,27 @@ class tem { print($this->run($templ)); } + # return the names of the top level subs, or an empty array + function top_sub_names() { + if(isset($this->sub_subs['top_level_subs'])) { + return $this->sub_subs['top_level_subs']; + } else { + return array(); + } + } + # return the contents of the top-level sub-templates # - # this does not run the sub-templates, so if you've not called tem_sub() on them, they will be blank. + # this does not run the sub-templates, so if you've not called tem_show() on them, they will be blank. # # Return a hash. # keys: name of top level sub-template. # values: contents of said sub-template. function top_subs() { $ret = array(); - if(isset($this->sub_subs['top_level_subs'])) { - foreach($this->sub_subs['top_level_subs'] as $name) { - $ret[$name] = $this->get($name); - } + $names = $this->top_sub_names(); + foreach($names as $name) { + $ret[$name] = $this->get($name); } return $ret; } @@ -201,6 +223,11 @@ function tem_init() { } } +function tem_append($key, $value) { + tem_init(); + $GLOBALS['wfpl_template']->append($key, $value); +} + function tem_set($key, $value) { tem_init(); $GLOBALS['wfpl_template']->set($key, $value); @@ -216,9 +243,14 @@ function tem_run($templ = false) { return $GLOBALS['wfpl_template']->run($templ); } +# depricated (renamed tem_show()) function tem_sub($sub_template_name) { + tem_show($sub_template_name); +} + +function tem_show($sub_template_name) { tem_init(); - $GLOBALS['wfpl_template']->sub($sub_template_name); + $GLOBALS['wfpl_template']->show($sub_template_name); } function tem_load($filename) { @@ -242,7 +274,7 @@ function template_filler($matches) { foreach($encs as $enc) { $enc = "enc_$enc"; if(function_exists($enc)) { - $value = $enc($value); + $value = $enc($value, $tag); } else { print "ERROR: encoder function '$enc' not found.
\n"; exit(1); @@ -260,9 +292,22 @@ function template_run($template, &$keyval) { return preg_replace_callback(array('||', '|~([^~]*)~|', '|([^<]*)|', '|

([^<]*)

|'), 'template_filler', $template); } +function tem_top_sub_names() { + tem_init(); + return $GLOBALS['wfpl_template']->top_sub_names(); +} + function tem_top_subs() { tem_init(); return $GLOBALS['wfpl_template']->top_subs(); } +# replaces currently set template, and returns the old. +function tem_load_new($file) { + $old = $GLOBALS['wfpl_template']; + $GLOBALS['wfpl_template'] = new tem(); + $GLOBALS['wfpl_template']->load($file); + return $old; +} + ?>