5.10.1 Objets Cmd

Une instance de Cmd possède les méthodes suivantes:

cmdloop([intro])
De façon répétitive, émet une invite, accepte des données d'entrée, isole le premier élément parmi les données reçues, et aiguille vers des méthodes d'actions, en leur passant le reste de la ligne en argument.

L'argument optionnel est une bannière ou une chaîne introductive qui doit être produite avant la première invite (ceci surcharge le membre de classe intro).

Si le module readline est chargé, l'entrée bénéficiera automatiquement des facilités d'édition du type bash (par exemple, Ctrl-P revient à la commande précédente, Ctrl-N passe à la suivante, Ctrl-F déplace le curseur vers la droite sans effacement, Ctrl-B déplace le curseur vers la gauche sans effacement, etc.).

Une fin de fichier en entrée est renvoyée sous la forme de la chaîne de caractères 'EOF'.

Une instance de l'interpréteur reconnaît un nom de commande "truc" si et seulement si il possède une méthode do_truc(). Comme cas particulier, une ligne qui commence par le caractère "?" est aiguillé vers la méthode do_help(). Comme autre cas particulier, une ligne qui commence par le caractère "!" est aiguillée vers la méthode do_shell (si une telle méthode est définie).

Toutes les sous-classes de Cmd héritent d'une méthode do_help prédéfinie. Cette méthode, appelée avec un argument bar, invoque la méthode correspondante help_bar(). Sans argument, do_help() liste tous les sujets d'aide (c'est-à-dire toutes les commandes qui possèdent la méthode help_*() correspondante), et liste aussi toutes les commandes non documentées.

onecmd(str)
Interprète l'argument comme s'il avait été entré au clavier en réponse à l'invite.

emptyline()
Méthode appelée quand on entre une ligne vide en réponse à l'invite. Si cette méthode n'est pas surchargée, elle répète la dernière ligne non vide introduite.

default(ligne)
Méthode appelée en réaction à une ligne de commande quand le premier élément de la commande n'est pas reconnu. Si cette méthode n'est pas surchargée, elle imprime un message d'erreur et se termine.

precmd()
Méthode d'accroche exécutée avant que l'invite soit présentée. Cette méthode est un bouchon inactif dans Cmd; elle existe pour être surchargée par des sous-classes.

postcmd()
Méthode d'accroche exécutée juste après que l'aiguillage d'une commande est terminé. Cette méthode est un bouchon inactif dans Cmd; elle existe pour être surchargée par des sous-classes.

preloop()
Méthode d'accroche exécutée une fois quand cmdloop() est appelée. Cette méthode est un bouchon inactif dans Cmd; elle existe pour être surchargée par des sous-classes.

postloop()
Méthode d'accroche exécutée une fois quand cmdloop() est sur le point de se terminer. Cette méthode est un bouchon inactif dans Cmd; elle existe pour être surchargée par des sous-classes.

Les instances des sous-classes de Cmd ont un certain nombre de variables d'instance publiques:

prompt
L'invite présentée pour solliciter des données d'entrée.

identchars
La chaîne des caractères acceptés pour le premier élement de la commande.

lastcmd
Le premier élément de la dernière commande non vide introduite.

intro
Une chaîne de caractères à présenter comme introduction ou bannière. Peut être surchargée en donnant un argument à cmdloop().

doc_header
L'en-tête à présenter si le message d'aide possède une section pour les commandes documentées.

misc_header
L'en-tête à présenter si le message d'aide possède une section pour divers sujets d'aide (c'est-à-dire, s'il y a des méthodes help_*() sans les méthodes do_*() correspondantes).

undoc_header
L'en-tête à présenter si le message d'aide possède une section pour les commandes non documentées (c'est-à-dire, s'il y a des méthodes do_*() sans les méthodes help_*() correspondantes).

ruler
Le caractère utilisé pour dessiner les lignes de séparation en-dessous des en-têtes de messages d'aide. S'il est vide, la ligne n'est pas dessinée. La valeur par défaut est "=".