¿Quien no conoce las miticas frases que suelen salir cuando se hace login en un sistema? (al menos en Slackware), tambien conocidas como Galletas de la suerte, fortunes, o algo asi...
¿Seria curioso poder usarlas tambien en una pagina web y que cada vez que carge la pagina salga una diferente, no?, pues no es demasiado dificil. Si las instalaste " sudo apt-get install fortune " puedes encontrar varias en /usr/share/games/fortunes/ , el formato que siguen es bastante sencillo, es texto plano, separando una "galleta" de otra con una linea con solo un %, seria algo asi:
Frase nº 1
%
Frase nº 2
%
Frase nº 3
...
Siendo tan sencillo el formato, se pueden aprovechar facilmente los archivos para cualquier cosa, por ejemplo (o para descargar [fort2js.pl] ):
#!/usr/bin/env perl
if ($#ARGV != 1){ # Se comprueba que se especificaron los dos archivos
print "./fort2js.pl <fortune> <javascript>\n";
exit(0);
}
$fname = $ARGV[0];
$foutname = $ARGV[1];
print "fort2js: ".$fname." -> ".$foutname."\r\n";
$fname = "<".$fname; # Archivo que se lee
$foutname = ">".$foutname; # Archivo que se escribe
$i = 0; # nº de fortunes
open (F, $fname);
open (O, $foutname);
print O "function get_cookie(v){var cookie = new Array(\""; # Cabecera de la funcion
while ($line = <F>){
if (substr($line,0,1) eq "%"){ # Si es el fin de una fortune
print O "\",\""; # Nueva posicion en el array
$i++; # Una fortune mas
}
else{
$line =~ s/\ \ /\ /g; # Se eliminan los dobles espacion
$line =~ s/"/\\"/g; # Se escapan las comillas
$line =~ s/\n/<br\/>/g; # Se cambian los saltos de linea por <br/>
$line =~ s/\r//g; # Se eliminan los retornos de carro
print O $line;
}
}
print O "\");return cookie[v]}"; # Fin de la funcion
print O "function max_cookie(){return ".$i.";}"; # Funcion max_cookie()
close F, O;
Esto sirve para convertir un archivo de fortune's en uno de Javascript que permita usar las "galletas" con dos funciones, get_cookie(i) para recuperar la frase numero i y max_cookie() que servira para saber de cuantas "galletas" podemos hacer uso.
El archivo que resulta de hacer ./fort2js.pl <archivo de galletas> < archivo de salida> se puede usar muy facilmente, solo habria que subirlo a algun lugar, y añadir algo como esto al codigo HTML donde queramos que se muestre:
<div id="cookie">[Cargando...]</div>
<script type="text/javascript" src="http://sitio.donde.esta/archivo/donde/esta"></script>
<script type="text/javascript"><!--//
var rand=Math.floor(Math.random()*max_cookie());
document.getElementById('cookie').innerHTML=get_cookie(rand); //--></script>
Y ya estan listas las galletas de la fortuna :D
Hasta ahora!
[Referencias]
http://www.w3schools.com/js/default.asp
http://en.wikipedia.org/wiki/Fortune_(Unix)
No hay comentarios:
Publicar un comentario