Extension:Eval/eval.php

setHook( "eval", "renderEval" ); }

function strpbrk($pajar,$agujas) { $m=FALSE; for($i==0;$i<strlen($agujas);$i++) {   $n=strpos($pajar,$agujas[$i]); if((($n<$m)||($m===FALSE))&&($n!==FALSE)) $m=$n; } return $m; } function parseEvalC($evalv,$prm="r") { $evalv["error"]=0; switch ($evalv["op"]) {   case "+": $evalv[$prm]=$evalv["p1"]+$evalv["p2"]; break; case "-": $evalv[$prm]=$evalv["p1"]-$evalv["p2"]; break; case "*": $evalv[$prm]=$evalv["p1"]*$evalv["p2"]; break; case "/": $evalv[$prm]=$evalv["p1"]/$evalv["p2"]; break; default: $evalv["error"]=2; } return $evalv; } function parseEvalP($evalv,$prm="p1") { switch($evalv["t"][0]) {   case "0":case "1":case "2":case "3":case "4":case "5": case "6":case "7":case "8":case "9":case ".":case "e": // Busca la posición del operador $n=strpbrk($evalv["t"],'+-*/'); if($n===FALSE) $n=strlen($evalv["t"]); // Copia el parámetro (hasta el operador, excluido) $evalv[$prm]=substr($evalv["t"],0,$n); break; case "+":case "-": $evalv[$prm]=0; break; //Si no se especifica, antes de un más o un menos hay un 0 case "*":case "/": $evalv[$prm]=1; break; //Si no se especifica, antes de un más o un menos hay un 1 case "(":    $eval2=parseEval($evalv);     $evalv["t"]=substr($eval2["t"],1);	// Copia el texto a procesar, sin el paréntesis...     $evalv[$prm]=$eval2["r"];     break; //	case "{": //     break;    default:     $evalv["error"]=1;   }  return $evalv; }
 * 1) print("\n");
 * 1) print ("");
 * 1) print("\n");
 * 1) print("\n\n");
 * 1) print("\n\n");
 * 1) print("\n");
 * 2) print("\n");

function parseEvalO($evalv) { $evalv["op"]=substr($evalv["t"],0,1); // Copia el operador $evalv["t"]=substr($evalv["t"],1); // Elimina el operador del texto a procesar return $evalv; } function parseEval($evalv) { // Toma el primer objeto. $evalv=parseEvalP($evalv); if($evalv["error"]>0) return $evalv; do  { $evalv=parseEvalO($evalv);	// Toma el operador if($evalv["error"]>0) return $evalv; $evalv=parseEvalP($evalv,"p2"); // Toma el segundo parámetro. if($evalv["error"]>0) return $evalv; $evalv=parseEvalC($evalv,"p1");	// Calcula el resultado, y lo almacena en el primer parámetro if($evalv["error"]>0) return $evalv; } while ((strlen($evalv["t"])>0)&&($evalv["t"][0]!=")")); $evalv["r"]=$evalv["p1"];  return $evalv; } function renderEval( $eniro, $argv ) {  global $wgOut;
 * 1) print("\n");
 * 1) print("\n");
 * 1) print("\n");
 * 1) print("\n");

$e["t"]=$wgOut->parse($eniro,false); $e["error"]=0; $eliro=parseEval($e); if($eliro["error"]>0) return ""; return $eliro["r"]; }

// ?>