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.

Manage Finder files with HyperCard

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 !

Vous avez aimé ? Partagez !