Gérer les fichiers du Finder avec HyperCard
Si HyperCard est assez limité dans sa gestion du contenu des disques, il est tout de même capable de rendre certains services bien pratiques. De plus, en utilisant les capacités des commandes externes, il devient possible d’automatiser des tâches qui pourraient prendre beaucoup de temps.
Sans aucune commande externe, il est possible d’ouvrir un fichier et de lire son contenu avec une pile HyperCard :
on mouseUp global lefichier, lavariable answer file "Fichier à ouvrir ?" put it into lefichier open file lefichier repeat until it is empty read from file lefichier for 500 put it after lavariable end repeat close file lefichier end mouseUp
Le script précédent déclare deux variables, demande à l’utilisateur de choisir un fichier, puis ouvre le fichier et copie son contenu, par paquets de 500 caractères, dans une variable. Ensuite, il referme le fichier. À partir de ce moment, il est possible d’utiliser le contenu de la variable et de le modifier comme n’importe quelle suite de caractères. Ensuite, on peut inscrire le contenu de la variable dans le fichier précédent. Si la variable est vide, alors le fichier sera vidé !
open file lefichier write lavariable to file lefichier close file lefichier
Avec ces quelques lignes, il devient possible de créer des fichiers texte (de type SimpleText, HTML…) et même des fichiers de tout autre type (JPEG, Mov…) à condition de connaître le format de données correspondant !
Ensuite, pour améliorer encore la gestion des fichiers, il faut utiliser des XCMD (commandes externes) qui permettent de dépasser les limites d’HyperTalk. Parmi les externes indispensables, on trouve GetDir et SetFInfo de Frédéric Rinaldi. Voici par exemple un script qui permet de transformer tous les documents “.htm” d’un dossier en documents GoLive, quel que soit leur format d’origine (Explorer, HomePage…) :
on mouseup answer folder "Quel dossier voulez-vous modifier ?" put it into ledossier put getdir(ledossier,f) into lesfichiers repeat with i = 1 to number of lines in lesfichiers if line i of lesfichiers contains “.htm” then SetFInfo ledossier & line i of lesfichiers,"t=" & TEXT,"c=" & GoMk end if end repeat end mouseup
Remarquez la quatrième ligne qui utilise la XCMD GetDir et qui permet de connaitre le contenu d’un dossier. La septième ligne, de son côté, permet de modifier le type et le créateur d’un fichier. Et voilà comment, après avoir créé 500 pages HTML avec une pile HyperCard, on les modifie en documents GoLive qui, d’un simple double-clic, s’ouvrent dans l’éditeur HTML plutôt que dans SimpleText !