Пример #1
0
 function display()
 {
     global $path_to_root;
     include_once $path_to_root . "/themes/" . user_theme() . "/renderer.php";
     $this->init();
     $rend = new renderer();
     $rend->wa_header();
     $rend->display_applications($this);
     $rend->wa_footer();
     $this->renderer =& $rend;
 }
Пример #2
0
 /**
  * moves a string to a math object
  *
  * @param string $str string/text/char
  *
  * @return bool|\math\objects\string
  */
 public static function stringToRenderdObject($str)
 {
     if (strpos($str, "^")) {
         $s = explode("^", $str);
         return objects\string::sup(renderer::init(self::stringToRenderdObject($s[0])), renderer::init(self::stringToRenderdObject($s[1])));
     }
     if (strpos($str, "_")) {
         $s = explode("_", $str);
         return objects\string::sub(renderer::init(self::stringToRenderdObject($s[0])), renderer::init(self::stringToRenderdObject($s[1])));
     }
     if (ctype_alpha($str)) {
         return objects\string::char($str);
     } elseif (is_numeric($str)) {
         return objects\string::number($str);
     } elseif (is_string($str)) {
         return objects\string::string($str);
     }
     return false;
 }
Пример #3
0
 /**
  * This is the main part behind MathPHP.
  *
  * It prepares the objects. It renders the whole sourcecode of the objects.
  * It returns a tree of \math\rendered objects
  *
  * @param array|object          $objectarray  Math object which should be rendered
  * @param bool|true $autodetect sould this method auto detect simple strings (\math\objects\string)
  *
  * @return array|bool|\math\objects\string|string
  */
 public static function init($objectarray, $autodetect = true)
 {
     $code = [];
     if (is_array($objectarray) && count($objectarray) > 0) {
         foreach ($objectarray as $obj) {
             if (is_array($obj)) {
                 $code[] = renderer::init($obj);
             } else {
                 if (is_object($obj)) {
                     if (get_class($obj) != "math\\rendered") {
                         $code[] = renderer::init($obj);
                     } else {
                         $code[] = $obj;
                     }
                 } else {
                     if ($autodetect) {
                         $code[] = renderer::init(functions::stringToRenderdObject($obj));
                     } else {
                         $code[] = $obj;
                     }
                 }
             }
         }
     } else {
         if (is_object($objectarray)) {
             if (get_class($objectarray) == "math\\rendered") {
                 return $objectarray;
             } else {
                 if (!$objectarray->isBase()) {
                     if (get_class($objectarray) == "math\\mathobject") {
                         $objectarray->setContent(renderer::init($objectarray->getContent(), true));
                         //return renderer::init($objectarray->getContent(), true); // @TODO
                     } else {
                         $objectarray->setObjectscache(renderer::init($objectarray->getObjectscache(), true));
                     }
                 }
                 $ex = explode("::", $objectarray->getType());
                 $func = $ex[1];
                 $engine = '\\math\\renderengines\\' . self::getRenderEngine() . '\\' . $ex[0];
                 if (class_exists($engine) && method_exists($engine, $func)) {
                     if (get_class($objectarray) == "math\\mathobject") {
                         return new rendered($engine::$func($objectarray->getContent()));
                     } else {
                         if (!is_array($objectarray->getObjectscache())) {
                             if (get_class($objectarray->getObjectscache()) == "math\\rendered") {
                                 return $objectarray->getObjectscache();
                             } else {
                                 return new rendered($engine::$func($objectarray->getObjectscache()->getContent()));
                             }
                         } else {
                             return new rendered($engine::$func($objectarray->getObjectscache()));
                         }
                     }
                 } else {
                     if (get_class($objectarray) == "math\\mathobject") {
                         return new rendered($objectarray->getContent());
                     } else {
                         return new rendered($objectarray->getObjectscache());
                     }
                 }
             }
         } else {
             if (is_string($objectarray)) {
                 if ($autodetect) {
                     return functions::stringToRenderdObject($objectarray);
                 } else {
                     return $objectarray;
                 }
             } else {
                 return $objectarray;
             }
         }
     }
     return $code;
 }
Пример #4
0
 /**
  * renders the current math object and displays it
  *
  * @param bool|false $return     should the rendered sourcecode be echoed or returned
  * @param bool|true  $autodetect auto detect strings/integers/chars
  * @param bool|true  $copy       copy the current math object to a new history
  *
  * @return $this
  */
 public function view($return = false, $autodetect = true, $copy = true)
 {
     $this->objectscache[$this->pointer] = renderer::init($this->objectscache[$this->pointer], $autodetect);
     if ($return) {
         return $this;
     } else {
         if ($copy) {
             $this->objectscache[$this->pointer + 1] = $this->objectscache[$this->pointer];
         }
         echo renderer::objToString($this->objectscache[$this->pointer]);
         $this->pointer++;
         return $this;
     }
 }