MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
---|---|---|
Anterior | Capítulo 3. Programación en MetaTalk y Transcript | Siguiente |
El siguiente código lo utilizo para extraer de un fichero HTML la lista de nombres y direcciones de correo de los alumnos. Así genero un fichero XML a base de recorrer el anterior buscando las coincidencias con el patrón que se observa en el fichero HTML que contiene la información sobre cada alumno. A destacar de este código:
Excepto que no se puede utilizar ninguna referencia a objetos gráficos, aquí no hay interfaz gráfica el resto de las instrucciones de MetaTalk están disponibles.
La limitación de número de instrucciones no se aplica en este caso.
Se puede utilizar cualquier editor de texto para crearlos y editarlos.
Aquí el punto de entrada del código, puesto que no hay ningún objeto gráfico no es un openCard, mouseUp o similar, es el evento startup.
Se ejecuta con "revolution nombreFichero"; pero como no empleo nada particular de Revolution, la verdad es que se puede ejecutar también con "mc nombreFichero". A no ser que sepa cómo instruir a su sistema operativo para que utilice deteminada aplicación para ejecutar este archivo ..., en cuyo caso bastará con invocar el nombre del fichero como con cualquier ejecutable.
Nota: Eche un vistazo a un fichero de MetaCard (un ".mc") con un editor de texto. Además de ver una buena idea para el comentario anterior, comprobará que las pilas son parte texto y parte código binario. Aquí sí que todo es texto, no hay propiedades de los objetos gráficos que guardar en binario por eficiencia.
# # /home/magusti/revo/revolution # # ######################################################## # #/home/magusti/docencia/2k2-2k3/SMM/3x/orlesCampusVirtual.mc # El primer argument es el directori on està el fitxer HTML que te els noms # i correus. # # ######################################################## local fitxerHTML local nomAlumne, correuAlumne, restoHTML on startup if ($1 is empty) then put "Aplicació per fer la conversió de la informació dels alumes en XML per al Campus Virtual." put return &\" "Exemple d'utilització: ~/MetaCard2.4/mc orlesCampusVirtual.mc ." & \ return exit startup end if put return & \ "Construint l'eixida a partir de " &\ $1 & "/orlaCorreus.html" if not there is a file ($1 & "/orlaCorreus.html") then put "Error: no està " & $1 & "/orlaCorreus.html" else # Ficar noms i @s de correu #Examinar fitxer put "Procesant " & $1 & "/orlaCorreus.html" put url ("file:" & $1 & "/orlaCorreus.html") into fitxerHTML repeat while matchText( fitxerHTML, \ "<head>(.*)</head>(.*)", \ nomAlumne, restoHTML ) is true put nomAlumne & return put restoHTML into fitxerHTML end repeat set the caseSensitive to false put "<?xml version=" & quote & "1.0" & quote & \ " encoding=" & quote & "iso-8859-1" & quote & "?>" & return & \ "<!-- Fet en el MetaCard 2.4 a" && the internet date &&\ "per M. Agustí per a l'asignatura de SMM 2k2/2k3 -->" & return & \ "<alumnos>" & return into llistaDatos put 0 into i repeat while matchText( fitxerHTML, \ "<tr.[^h]*h.[^>]*>(.[^<]*)<.[^m]*mailto.[^>]*>(.[^<]*)<(.*)", \ nomAlumne, correuAlumne, restoHTML ) is true put " <alumno nombre=" & quote & last item of nomAlumne & quote & \ " apellido1=" & quote & word 1 to -2 of first item of nomAlumne & quote & \ " apellido2=" & quote & last word of first item of nomAlumne & quote & \ " email=" & quote & correuAlumne & quote & "/>" & return after llistaDatos put (i + 1) into i put restoHTML into fitxerHTML end repeat put " " && "Ja no topete més correspondencies !!" put "</alumnos>" & return after llistaDatos # Una simple questió d'estética replace "nombre= " with "nombre=" in llistaDatos put llistaDatos & return end if end startup