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: 16 años
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