Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/09/2008, 00:45
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 18 años, 5 meses
Puntos: 2534
[APORTE] Chuleta de funciones!

Que tal... apenas que estaba trabajando con un framework que estoy desarrollando me di cuenta que hay momentos que uno no recuerda ni sus propias funciones, incluso... el orden y uso de cada parámetro, cosas simples... pues

también, alguna ves vi una chuleta de CSS rondando por el foro, o algo así... y se me ocurrió hacer lo mismo, pero en una función para que pueda ser usada en cualquier archivo con funciones estándar... (parece que también funciona con clases, pero no esta implementado)



muestra el nombre del archivo a reportar, con cada una de sus funciones excepto las que empiecen con Mayúsculas y guion_bajo; también muestra los parámetros manualmente tal y como están escritos... puede ser de gran utilidad a veces, de veras!

igualmente, los estilos son configurables con CSS, el código es modificable 100% al gusto... no se, una buena idea es: imprimir el formato como PDF :D


--

Codigo fuente:

Código PHP:
/**
 * (cadena[, devolver?[, ocultar?]])
 *
 * Crea una "chuleta" de reporte acerca de las funciones de un script.
 */
function report($text, $ret = true, $hid = true)
{
    
$out = array();

    
//preg_match_all('/function\s+([a-z0-9_]+)\s*\(([^\{]*)\)(?=\s*[^\)])/is', $text, $test);
    
preg_match_all('/function\s+((?:&?\s*)?[a-z0-9_]+)\s*\(([^\{]*)\)/is', $text, $test);
    
    
ksort($test[1]);
    foreach (
$test[1] as $key => $val)
    { 
// evitamos..
        
if (preg_match('/^([A-Z]|_)/', $val) && $hid)
        {
            continue;
        }

        
// simple...
        
$args = ents($test[2][$key]);

        
$args = preg_replace('/([\'\"])[^=\\1]*\\1/', '<span style="color:green">\\0</span>', $args); // "cadena's"
        
$args = preg_replace('/(true|false|null)/i', '<span style="color:purple;font-weight:bold">\\0</span>',$args); // bool's
        
$args = preg_replace('/\b[0-9]+\b/', '<span style="color:black;font-weight:bold">\\0</span>',$args); // numeros
        
$args = preg_replace('/\$[a-z0-9_]+/i', '<span style="color:darkblue">\\0</span>',$args); // $variables..
        
$args = preg_replace('/[a-z0-9_]+\(.*?\)/i', '<span style="color:teal">\\0</span>',$args); // funciones

        
$args = trim($args)? $args: $args.'<span style="color:black;font-weight:bold;font-style:italic">void</span>';
        
$args = preg_replace('/\s+=\s+/', '&nbsp;=&nbsp;', $args);
        
$args = preg_replace('/\s*,\s+/', ',&nbsp;', $args);
        
        
$out[] = "\t<span style=\"color:orange\">[<span style=\"color:red;font-weight:bold\">$val</span>&nbsp;:&nbsp;$args]</span>";
    }

    
$out = join("\n", $out);

    if ( ! 
$ret)
    {
        echo 
$ret;
    }
    return 
$out;
} 

Edito: actualizado y corregido
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 29/11/2008 a las 02:54