Show
Ignore:
Timestamp:
10/09/09 03:17:54 (5 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1255058274 +0000
git-parent:

[d83c60ec436c1936f4b7e575a76dc3fe546b6d04]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1255058274 +0000
Message:

missing data isn't rendering right. fixes #201

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ui/web/lib/Reconnoiter_RPN.php

    rdf2e366 r5b62a23  
    99      switch($op) { 
    1010        case 'ln': 
    11           array_unshift($s, log(array_shift($s))); break; 
     11          $v = array_shift($s); 
     12          array_unshift($s, is_null($v) ? $v : log($v)); break; 
    1213        case 'round': 
    1314          $r = array_shift($s); 
    1415          $l = array_shift($s); 
    15           array_unshift($s, round($l,$r)); 
     16          array_unshift($s, is_null($l) ? $l : round($l,$r)); 
    1617          break; 
    1718        case 'floor': 
    18           array_unshift($s, floor(array_shift($s))); break; 
     19          $v = array_shift($s); 
     20          array_unshift($s, is_null($v) ? $v : floor($v)); break; 
    1921        case 'ceil': 
    20           array_unshift($s, ceil(array_shift($s))); break; 
     22          $v = array_shift($s); 
     23          array_unshift($s, is_null($v) ? $v : ceil($v)); break; 
    2124        case 'log': 
    2225          $r = array_shift($s); 
    2326          $l = array_shift($s); 
    24           array_unshift($s, log($l,$r)); 
     27          array_unshift($s, is_null($l) ? $l : log($l,$r)); 
    2528          break; 
    2629        case 'e': 
     
    3134          $r = array_shift($s); 
    3235          $l = array_shift($s); 
    33           array_unshift($s, pow($l,$r)); 
     36          array_unshift($s, (is_null($r) || is_null($l)) ? NULL : pow($l,$r)); 
    3437          break; 
    3538        case '-': 
    3639          $r = array_shift($s); 
    3740          $l = array_shift($s); 
    38           array_unshift($s, $l-$r); 
     41          array_unshift($s, (is_null($r) || is_null($l)) ? NULL : ($l-$r)); 
    3942          break; 
    4043        case '/': 
    4144          $r = array_shift($s); 
    4245          $l = array_shift($s); 
    43           array_unshift($s, $l/$r); 
     46          array_unshift($s, (is_null($r) || is_null($l) || $r == 0) ? NULL : ($l/$r)); 
    4447          break; 
    4548        case '.': 
    4649          array_unshift($s, $s[array_shift($s)]); break; 
    4750        case '+': 
    48           array_unshift($s, array_shift($s) + array_shift($s)); break; 
     51          $r = array_shift($s); 
     52          $l = array_shift($s); 
     53          array_unshift($s, (is_null($r) || is_null($l)) ? NULL : ($l+$r)); 
     54          break; 
    4955        case '*': 
    50           array_unshift($s, array_shift($s) * array_shift($s)); break; 
     56          $r = array_shift($s); 
     57          $l = array_shift($s); 
     58          array_unshift($s, (is_null($r) || is_null($l)) ? NULL : ($l*$r)); 
     59          break; 
    5160        case 'auto': 
    52           array_unshift($s, $this->autounits(array_shift($s))); break; 
     61          $v = array_shift($s); 
     62          array_unshift($s, is_null($v) ? $v : $this->autounits($v)); break; 
    5363        case 'min': 
    54           array_unshift($s, min(array_shift($s),array_shift($s))); break; 
     64          $r = array_shift($s); 
     65          $l = array_shift($s); 
     66          if(is_null($r)) array_unshift($s,$l); 
     67          else if(is_null($l)) array_unshift($s,$r); 
     68          else array_unshift($s, min($r,$l)); 
     69          break; 
    5570        case 'max': 
    56           array_unshift($s, max(array_shift($s),array_shift($s))); break; 
     71          $r = array_shift($s); 
     72          $l = array_shift($s); 
     73          if(is_null($r)) array_unshift($s,$l); 
     74          else if(is_null($l)) array_unshift($s,$r); 
     75          else array_unshift($s, max($r,$l)); 
     76          break; 
    5777        default: 
    5878          if(preg_match('/^-?\d+$/', $op)) {