Foros del Web » Programando para Internet » PHP »

Para todos los que usen Maguma Studio

Estas en el tema de Para todos los que usen Maguma Studio en el foro de PHP en Foros del Web. Esto es mas que nada una experiencia para compartir... Hola, Hace poco empece a usar el editos Maguma Studio y al rato me encontre con ...
  #1 (permalink)  
Antiguo 07/04/2003, 02:32
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Para todos los que usen Maguma Studio

Esto es mas que nada una experiencia para compartir...


Hola,
Hace poco empece a usar el editos Maguma Studio y al rato me encontre con que el coloreado de sintaxis no reconoce algunas de la funciones, entonces me encapriche y empece a buscarle una solucion. Asi que la comparto con ustedes.

Finalmente llegue a esto:
  • Que reconozca TODAS las funciones de PHP
  • Que la ayuda contextual con los parametros de la funcion aparezca en español!! (la mayoria P)

El primer punto es bastante facil, si se fijan en el directorio donde instalaron maguma (por defecto es C:\Archivos de programa\Maguma Studio\) hay una carpeta que se llama Data y dentro un archivo que llamado php-funcs.dat. Al parecer esto no es mas que la lista de funciones que Maguma usa para highlight, y basta con ir al cvs de php.net y bajar un archivo que tiene presisamente esto de la seccion de manuales en ingles.
El link es este:
http://cvs.php.net/cvs.php/phpdoc/quickref.txt?login=2
Luego hay que guardarlo en nuestra pc con cualquier nombre, por ej quickref.txt
Cada linea de este archivo es esto:
Código:
nombredelafuncion - breve descripcion de la funcion
Ejemplo:
Código:
abs - Absolute value
De este archivo lo que saque entonces es la lista completa de funciones aplicandole este codigo:
Código PHP:
$quickrefdecvs 'c:\windows\escritorio\quickref.txt';  //Aqui hay que poner el path al quickref
$nuevophp_funcs 'c:\windows\escritorio\php-funcs.dat';  // Aqui se creara el nuevo php-funcs.dat
$lineas file($quickrefdecvs);

$fp fopen($nuevophp_funcs"w");
$patronascii "[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5];";  // esta es mi primera expresion regular que funciona bien (creo)
foreach( $lineas as $linea ) {
    
$linea trim($linea);
    
$linea substr($linea0strpos($linea" - "));
    if (
ereg("&#(".$patronascii.");"$linea$reg)) {
        
$linea str_replace($reg[0], chr(intval($reg[1])), $linea);
    }
    if (
next($lineas)) {
        
fputs($fp$linea."\n");
    } else {
        
fputs($fp$linea);
    }
}
fclose($fp);
echo 
"<big>Tu $nuevophp_funcs ahora tiene <b>".count($lineas)."</b> funciones :-P</big>"
Despues solo resta hacer un backup del php-funcs.dat original y sobreescribirlo con el nuevo.

Hasta alli vamos facil, el problema es que en el archivo que se bajo del cvs no tiene los parametros de cada funcion, entonces lo que probe hacer es interpretar el Manual de PHP en español version HTML, y de alli obtener los parametros de c/func.
Maguma usa un archivo de nombre php-insight.dat que tiene esta estructura (cada linea)
Ej de echo:
Código:
echo(string $arg1 [, string $argn...])
Asi que usando la expresion regular correcta, se puede obtener lo que se quiere desde el html.
Primero que bajar la version html de un solo archivo del manual desde php.net.
Aca ta' el link:
http://www.php.net/distributions/man...al_es.html.bz2
Despues de descomprimirlo y bla bla... use este codigo.
Código PHP:
$manualphp 'C:\windows\escritorio\php_manual_es.html';   // aca esta el manual
$maguma_php_insight 'c:\windows\escritorio\php-insight.dat';  //aca quedara el nuevo php-insight.dat

$ini time();

$fpm fopen($manualphp"r");
$lineas fread($fpmfilesize($manualphp));
$lineas str_replace("\n"""$lineas);

$fpi fopen($maguma_php_insight"w");

// Patron
$patron '<H2>(Descripción|Description)</H2>([^<>]+)<(B CLASS|BCLASS)="methodname">([^<>]+)</B>([^<>]+)<';
// Patron

$patronascii "[0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5];";  // esta es mi primera expresion regular que funciona bien (creo)
while (ereg($patron$lineas$reg)){
    
$a++;
    
$lineas strstr($lineas$reg[0]);
    
$lineas substr($lineasstrlen($reg[0]));
    
$nuevaslineas[trim($reg[4])] = trim($reg[5]);
    
//echo nl2br("<b>$a: </b> $reg[2]<b>$reg[4]</b>$reg[5]\n");  //probar descomentar esta linea
    // if ($a >= 1000) break;                      // para test
}

uksort($nuevaslineas'strcasecmp');
foreach( 
$nuevaslineas as $clave => $valor ) {
    
$linea $clave.$valor;
    if (
ereg("&#(".$patronascii.");"$linea$reg)) {
        
$linea str_replace($reg[0], chr(intval($reg[1])), $linea);
    }
    if (
next($nuevaslineas)) {
        
fputs($fpi$linea."\n");
    } else {
        
fputs($fpi$linea);
    }
}
$fin time();
echo 
"<big>Despues de <b>";
echo 
date("i:s"$fin-$ini);
echo 
" minutos</b> se ordenaron y guardaron las $a referencias de funciones PHP en el archivo <b>$maguma_php_insight</b> !!</big>"
Despues se hace lo mismo que con el punto 1, copia de seguridad de php-insight.dat, sobreescribir, etc

El unico inconveniente es que, debido a que el manual pesa como 5MB y se usan ER, se tarda bastante en parsear el HTML. En mi maquina AMD K6-2 450 ( que anda overclockeada a 523mhz ) tarda como 20 minutos.
Lo unico que resta es que alguien pula la RE por yo del tema ¡casi-cero! (estuve como 2 horas pa' pegarle ).

Espero que a alguien le interese y le sirva, mejor dicho, espero que alguien se haya tomado el trabajo de leer todo esto .

Saludos.

Última edición por fran86; 08/04/2003 a las 05:27
  #2 (permalink)  
Antiguo 07/04/2003, 06:43
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 5 meses
Puntos: 5
Es fabuloso :) yo en el editor que estoy programando, colorea las funciones de PHP que tangas tu en tu servidor, es deicr si tienes en tu pc soporte solo para mysql, solo te coloreara esas funciones, es decir se acopla a cada sistema, asi ocupa menos memoria y es mas rapido, pero jeej la solucion que distes para maguma es muy buena :) felicidades :)
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 07/04/2003, 09:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Buen trabajo .. voy a "compilar" el tema como propones ..

Sobre el tema de "parsear" el manual HTML de PHP .. PHP dispone de versión del manual en formato XML (lo que no sé si tambíen estará el XML en español). Ahora no sé el URL directo .. pero de estar .. está .. muchos sitios formatean el manual de PHP a su gusto parseando el XML ..

Otra cosa que te propondría es ponerlo el código en las FAQ's de este foro e incluso si quieres podrías contactar a los Srs. de Maguma para que pongan tu "tip" en sus FAQ's (tienen foro tambien por si quieres ponerlo allá tambien.)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 07/04/2003, 09:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para el que no pueda o no se aclare "compilando" las funciones de PHP para Maguma segun la propuesta del código de fran86 .. Aquí les dejo el: php-funcs.dat (comprimido en un zip)

La mejora es sustancial .. de 16 Kbytes aprox. del original a 48 Kbytes final hay por medio muuuuchas funciones que no coloreaba ..

Excelente trabajo fran86.

Un saludo,

Última edición por Cluster; 07/10/2008 a las 06:16
  #5 (permalink)  
Antiguo 07/04/2003, 21:57
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Me alegro de que les haya servido.
Cluster, lo primero que pense es en conseguir el manual en XML, y entonces me di una vuelta por cvs.php.net. Pero en la seccion de manuales en español, no encontre ninguno que tenga todas las funciones, parametros, descrpcion, etc en un solo archivo, en cambio hay, por ej, un xml para las funciones CURL, otro para las de GD, y asi etc. Ademas queria usar expresiones regulares, pues como intento aprender este tema queria imponerme esta especie de meta, y asi ir aprendiendo.

Aca esta el segundo archivo php-insight.dat (comprimido), que es el que contiene los paramtros en español para la ayuda contextual, en este caso tambien la diferencia es significativa: de 120 kb a 131.
http://www.forosdelweb.com/attachment.php?postid=373755

Entonces se ahorran esos 20 min.

Dentro de un rato me paso por las FAQ y hago un poquito mas formal la explicacion.

Saludos.

Última edición por Cluster; 26/04/2003 a las 22:25
  #6 (permalink)  
Antiguo 08/04/2003, 05:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Si alguien trato de hacer el punto 2, antes del 08-04-2003 5 AM, solo le buscara 1000 expresiones porque esta linea estaba activada y deberis estar comentada.
Código PHP:
if ($a >= 1000) break;                      // para test 
Debe estar
Código PHP:
// if ($a >= 1000) break;                      // para test 
(perdon)
  #7 (permalink)  
Antiguo 26/04/2003, 22:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y ... bueno un poco tarde .. pero para el que no quiera o pueda generar el php-insight.dat .. aquí lo tienen:

Un saludo,

Última edición por Cluster; 07/10/2008 a las 06:16
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 22:41.