JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
make unit test results look good
[wfpl.git] / template.php
index 87305ce..697761e 100644 (file)
@@ -300,37 +300,54 @@ function merge_templates(&$main, &$tem) {
 function tem_auto_sep(&$value, $key, $context) {
        $rows =& $context['parent']['parent'];
        if($rows['cur'] != count($rows['rows'])-1)  # last row?
-               return $value = true;  # show once
+               return true;  # show once
 }
 
 # auto-show once, only when this is the first row of the parent
 function tem_auto_last(&$value, $key, $context) {
        $rows =& $context['parent']['parent'];
        if($rows['cur'] == count($rows['rows'])-1)  # last row?
-               return $value = true;  # show once
+               return true;  # show once
 }
 
 # auto-show once, only when this is the last row of the parent
 function tem_auto_first(&$value, $key, $context) {
        $rows =& $context['parent']['parent'];
        if($rows['cur'] == 0)  # first row?
-               return $value = true;  # show once
+               return true;  # show once
 }
 
 # 'show' sections will be shown unless the corresponding data
 # value === false
 function tem_auto_show(&$value) {
-       if($value === null) $value = array(array());
+       if($value === null) return true;
        return $value;
 }
 
+# 'empty' sections will be shown only if the corresponding data value is the
+# empty string
+function tem_auto_empty(&$value) {
+       if($value === '') return true;
+       return null;
+}
+
 # 'nonempty' sections will not be shown if the corresponding data
 # value is the empty string
 function tem_auto_nonempty(&$value) {
-       if($value === '') $value = null;
+       if($value === '') return null;
        return $value;
 }
 
+# 'unset' sections will not be shown if the corresponding data
+# value is not set (opposite of default)
+function tem_auto_unset(&$value) {
+       if($value === null) {
+               return '';
+       } else {
+               return null;
+       }
+}
+
 # 'evenodd' sections are given an 'evenodd' attribute whose value
 # alternates between 'even' and 'odd'.
 function tem_auto_evenodd(&$values) {
@@ -342,6 +359,27 @@ function tem_auto_evenodd(&$values) {
        return $values;
 }
 
+# 'once' sections are shown exactly once if the value is set (and not at all
+# otherwise.) This is useful when an array value would otherwise cause the
+# section to be displayed multiple times.
+function tem_auto_once(&$value) {
+       if($value === null) return null;
+       return true;
+}
+
+function tem_auto_once_if(&$value) {
+       if($value) return true;
+       return null;
+}
+
+# 'once' sections are shown exactly once if php evaluates the value to false
+# (and not at all otherwise.) This is useful when an array value would
+# otherwise cause the section to be displayed multiple times.
+function tem_auto_once_else(&$value) {
+       if($value) return null;
+       return true;;
+}
+
 
 
 
@@ -394,7 +432,7 @@ class tem {
                $this->data = array();
        }
        
-       function set($key, $value) {
+       function set($key, $value = true) {
                $this->data[$key] = $value;
        }
 
@@ -513,7 +551,7 @@ function tem_prepend($key, $value) {
        $GLOBALS['wfpl_template']->prepend($key, $value);
 }
 
-function tem_set($key, $value) {
+function tem_set($key, $value = true) {
        tem_init();
        $GLOBALS['wfpl_template']->set($key, $value);
 }