public function toHTML() { $s = '<div class="rexp vector xt_' . $this->getType() . '">'; $dim = $this->dim(); $n = $this->length(); $s .= '<span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span>'; $s .= '['; $s .= join(',', $dim); $s .= ']'; $s .= '<div class="values">'; if ($n) { $m = $n > 20 ? 20 : $n; for ($i = 0; $i < $m; ++$i) { $v = $this->values[$i]; if (is_object($v) and $v instanceof Rserve_REXP) { $v = $v->toHTML(); } else { $v = $this->valueToHTML($v); } $s .= '<div class="value">' . $v . '</div>'; } } $s .= '</div>'; $s .= $this->attrToHTML(); $s .= '</div>'; return $s; }
function testBinary($cnx, $values, $type, $options = array(), $msg = '') { echo '==================================' . CLI_EOL; echo 'Test ' . $type . ' ' . $msg . CLI_EOL; $tt = strtolower($type); $rexp = create_REXP($values, $type, $options); $bin = Rserve_Parser::createBinary($rexp); //var_dump($bin); $i = 0; echo "Debug REXP" . CLI_EOL; var_dump(Rserve_Parser::parseDebug($bin, $i)); $i = 0; echo "binary to REXP" . CLI_EOL; $r2 = Rserve_Parser::parseREXP($bin, $i); var_dump($r2); $cn2 = get_class($r2); $cn = get_class($rexp); if (strtolower($cn2) != strtolower($cn)) { echo 'Differentes classes' . CLI_EOL; return FALSE; } else { echo 'Class Type ok' . CLI_EOL; } $r = $cnx->assign('x', $rexp); if ($r['is_error']) { echo $cnx->getErrorMessage($r['error']); } else { echo "OK"; } echo CLI_EOL; echo "Check R object" . CLI_EOL; $r = $cnx->evalString('x'); var_dump($r); }
function testBinary($values, $type, $options = array(), $msg = '') { echo 'Test ' . $type . ' ' . $msg . '<br/>'; $cn = 'Rserve_REXP_' . $type; $r = new $cn(); $tt = strtolower($type); if (is_subclass_of($r, 'Rserve_REXP_Vector')) { if (is_subclass_of($r, 'Rserve_REXP_List') and @$options['named']) { $r->setValues($values, TRUE); } else { $r->setValues($values); } } else { $r->setValue($values); } $bin = Rserve_Parser::createBinary($r); var_dump(Rserve_Parser::parseDebug($bin, 0)); $r2 = Rserve_Parser::parseREXP($bin, 0); var_dump($r2); $cn2 = get_class($r2); if (strtolower($cn2) != strtolower($cn)) { echo 'Differentes classes'; return FALSE; } else { echo 'Class Type ok'; } }
public function toHTML() { $s = '<div class="rexp vector xt_' . $this->getType() . '">'; $n = $this->length(); $s .= '<span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span> <span class="length">' . $n . '</span>'; $s .= '<div class="values">'; if ($n) { $m = $n > 20 ? 20 : $n; for ($i = 0; $i < $m; ++$i) { $v = $this->values[$i]; if (is_object($v) and $v instanceof Rserve_REXP) { $v = $v->toHTML(); } else { if ($this->isString()) { $v = '"' . (string) $v . '"'; } else { $v = (string) $v; } } $s .= '<div class="value">' . $v . '</div>'; } } $s .= '</div>'; $s .= $this->attrToHTML(); $s .= '</div>'; return $s; }
/** * @dataProvider providerTestParser * @param unknown_type $type * @param unknown_type $values */ public function testParser($type, $values) { $rexp = $this->create_REXP($values, $type); $bin = Rserve_Parser::createBinary($rexp); $r2 = Rserve_Parser::parseREXP($bin, $i); $this->assertEquals(get_class($rexp), get_class($r2)); $this->assertEquals($rexp->getValues(), $r2->getValues()); }
public function toHTML() { return '<div class="rexp xt_' . $this->getType() . '"><span class="typename">' . Rserve_Parser::xtName($this->getType()) . '</span>' . $this->name . $this->attrToHTML() . '</div>'; }
/** * Evaluate a string as an R code and return result * @param string $string * @param int $parser * @param REXP_List $attr */ public function evalString($string, $parser = self::PARSER_NATIVE, $attr = NULL) { $r = $this->command(self::CMD_eval, $string); $i = 20; if (!$r['is_error']) { $buf = $r['contents']; $r = NULL; switch ($parser) { case self::PARSER_NATIVE: $r = Rserve_Parser::parse($buf, $i, $attr); break; case self::PARSER_REXP: $r = Rserve_Parser::parseREXP($buf, $i, $attr); break; case self::PARSER_DEBUG: $r = Rserve_Parser::parseDebug($buf, $i, $attr); break; case self::PARSER_NATIVE_WRAPPED: $old = Rserve_Parser::$use_array_object; Rserve_Parser::$use_array_object = TRUE; $r = Rserve_Parser::parse($buf, $i, $attr); Rserve_Parser::$use_array_object = $old; break; default: throw new Exception('Unknown parser'); } return $r; } // TODO: contents and code in exception throw new Rserve_Exception('unable to evaluate'); }
/** * Assign a value to a symbol in R * @param string $symbol name of the variable to set (should be compliant with R syntax !) * @param Rserve_REXP $value value to set */ public function assign($symbol, Rserve_REXP $value) { $symbol = (string) $symbol; $data = _rserve_make_data(self::DT_STRING, $symbol); $bin = Rserve_Parser::createBinary($value); $data .= _rserve_make_data(self::DT_SEXP, $bin); $r = $this->sendCommand(self::CMD_assignSEXP, $data); return $r; }