errcode = 1; elseif (defined("UNITS_EXE")) // ignore dynamic check $this->errcode = 0; else exec("units m2",$o,$this->errcode); } function Definition ($query) { static $Definitions = array(); if (isset($Definitions[$query])) return $Definitions[$query]; if ($this->errcode) return $query; $query = preg_replace("/,/","", $query); $def = $this->_cmd("\"$query\""); if (preg_match("/Definition: (.+)$/",$def,$m)) return ($Definitions[$query] = $m[1]); else { trigger_error("units: ". $def, E_USER_WARNING); return ''; } } function basevalue($query, $def = false) { if (!$def) $def = $this->Definition($query); if ($def) { if (is_numeric($def)) // e.g. "1 million" return $def; if (preg_match("/^([-0-9].*) \w.*$/",$def,$m)) return $m[1]; } return ''; } function baseunit($query, $def = false) { if (!$def) $def = $this->Definition($query); if ($def) { if (preg_match("/ (.+)$/",$def,$m)) return $m[1]; } return ''; } function _cmd($args) { if ($this->errcode) return $args; if (defined("UNITS_EXE")) { $s = UNITS_EXE ." $args"; $result = `$s`; } else $result = `units $args`; return trim($result); } }