X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=template.php;fp=template.php;h=9a512a6326b19c90d00d04cd7ae7dc8821bb02bf;hb=144fb330586b20e38f99f1bd758fde6de8c96eca;hp=3845c7c9bf9ec61b1b28829bfc30f4053f2d7035;hpb=e99321a886b30fc6d601c7065384bfe2a6d34bc4;p=wfpl.git diff --git a/template.php b/template.php index 3845c7c..9a512a6 100644 --- a/template.php +++ b/template.php @@ -53,7 +53,7 @@ function template_file($filename, $data) { return fill_template(parse_template_file($filename), $data); } -function parse_template_file($filename) { +function &parse_template_file($filename) { return parse_template(file_get_contents($filename)); } @@ -61,7 +61,7 @@ function parse_template_file($filename) { # A template is a hash with a name string, a pieces array, and possibly # an args array. -function parse_template($string) { +function &parse_template($string) { $tem =& tem_push(); $tem['pieces'] = array(); $matches = preg_split('/()/', preg_replace('//', '$1', $string), -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); @@ -163,7 +163,7 @@ function tem_data_as_rows($value) { if(array_key_exists(0, $value)) return $value; # key/value pairs -- expand sub-template once. else return array($value); - } elseif($value) { + } elseif($value || $value === 0 || $value === '0' || $value === '') { # value -- expand sub-template once using only parent values return array(array()); } else { @@ -317,11 +317,11 @@ function tem_auto_first(&$value, $key, $context) { return $value = true; # show once } -# 'show' sections will be shown unless the corresponding data value -# is false (only false, not 0 or '' or array()). +# 'show' sections will be shown unless the corresponding data +# value === false function tem_auto_show(&$value) { - if($value !== false) $value = array(array()); + if($value === null) $value = array(array()); return $value; } @@ -424,11 +424,11 @@ class tem { } function load_str($str) { - $this->template = parse_template($str); + $this->template =& parse_template($str); } function load($filename) { - $this->template = parse_template_file($filename); + $this->template =& parse_template_file($filename); } function run($tem = false) {