Dans cette vidéo, j'aimerais vous montrer comment un
objet peut définir des onglets qui vont apparaître dans l'inspecteur.
Comment on va voir ça ?
On va utiliser Spotter pour faire ça.
Donc dans Spotter ce dont je me rappelle c'est que je
cherche un #pragma, donc une annotation de méthode, qui commence par gt.
Je sais qu'il y a inspecteur dedans donc je vais aller voir ça.
Dans mon inspecteur je vois qu'il y a des #Pragmas et des
#Senders, je vais prendre les #Pragma.
Maintenant ce que je peux faire, je peux regarder par
exemple celui sur Morph.
On va ouvrir le code.
C'est celui qui correspond à, vous vous rappelez, si je
fais Inspect, ça va m'ouvrir un inspecteur et
cet inspecteur a cet onglet
et en fait comparons.
On voit qu'on crée un composite'Morph', qu'il y a un
titre et il y aura une action qui sera faite avec une
gestion d'erreur au cas où la'Morph'ne s'affiche pas bien.
Et là, on va convertir et afficher une'Morph'.
Vous avez aussi "act" qui sont la manière de pouvoir
associer des opérations sur
cet onglet.
On va voir un autre exemple.
Voila ici et là.
J'aimerais voir "Date".
Si vous vous rappelez on avait "date today inspect".
On avait Détails et Calendar.
Comment on crée cette'Morph'?
On crée juste la'Morph'en utilisant ce message.
Et Détails. Comment ça marche dans Détails?
Je demande à créer une table, je vais lui mettre un
titre, clé valeur, évaluer, rendre
la clé et calculer la valeur de la chose.
Le dernier exemple que je voulais vous montrer c'était,
qu'est-ce qui se passe quand on fait le travail qui est
fait pour l'inspecteur d'une méthode
? Vous vous rappelez, on avait une méthode qui était du
Bytecode, du moins un tableau qui contient du Bytecode et
on avait le Source ou l'AST ou du Bytecode.
Prenons l'AST. Je vais demander à mon très cher
Spotter. Je vais chercher Compiled
method. Prenons le Source,
ça me paraît bien.
Pour le Source, qui est ce panneau-là, on
voit qu'on définit le Source et là il y a pharoMethod.
Je ne sais pas exactement ce que c'est mais ça doit dire
que ça doit créer un objet qui va être capable d'afficher
une méthode Pharo, en appelant le Syntaxhighlighter ou
quelque chose comme ça. Et si je regarde AST, ça
va me rendre un
arbre,
ce qui va me rendre l'AST qui va être affiché dans l'arbre.
L'objectif ce n'est pas que vous compreniez parfaitement
comment ça fonctionne, c'est de vous montrer un petit peu
la complexité de la chose.
On voit que ce n'est pas très compliqué en règle générale.
Là, c'est pour le Bytecode, l'ir c'est aussi quelque chose d'autre.
Après, il y a de la logique métier à l'intérieur parce qu'il
faut voir comment on calcule la représentation
intermédiaire, et cetera, mais ça reste quelque chose de gérable.
Je voulais vous montrer ça parce que c'est sympa, vous
pouvez le faire parfois sur vos objets métier et ça vous
permet d'aller plus vite.