Dans cette vidéo, je voudrais vous montrer un des aspects
super sympa de Pharo, c'est son inspecteur.
Un inspecteur c'est un objet qui nous permet d'interagir
avec des objets, et de pouvoir discuter avec eux de manière vivante.
On va faire un essai sur le système de fichiers.
Par exemple, si je fais "File system
working directory", ça va me
donner tous les fichiers qui sont par exemple à la racine
de mon image, donc on va donc avoir ces objets-là.
Regardons. Ce que je vais faire si je fais "Inspect",
j'ouvre un inspecteur.
Donc là j'ai un inspecteur.
C'est le nouvel inspecteur de Pharo qui a été développé
par l'équipe, qui s'appelle GT, et il a des
fonctionnalités qui sont très intéressantes.
Commençons tout d'abord par regarder l'onglet
qui s'appelle "Raw", qui veut dire brut.
L'onglet "Raw" c'est l'ancien inspecteur et qu'est-ce qu'il
va me montrer lui ?
Il me montre les données de l'objet, les variables d'instances
de l'objet tel que défini dans la classe.
Je peux interagir avec.
Je peux, par exemple, demander toutes les entrées.
Là il me donne toutes les entrées, ou donne-moi tous les
directory, par exemple, là j'ai les directories.
Si on regarde la classe de cet objet, si je fais "Self
browse", qu'est-ce que je
vois finalement? Cette vue me montre les valeurs
pour l'objet en question des variables d'instances qui
ont été définies dans la classe de cette manière.
Ça va me permettre de regarder à l'intérieur.
Par exemple, là je peux voir que le chemin "Path" en fait
est composé de cet objet "Self", et je pourrai le voir
ici, donc là je suis encore en mode brut et puis de
pouvoir naviguer à l'intérieur.
Là, si je fais ça, je vais aller voir finalement la
chaîne User et ce genre de choses.
Donc là finalement je viole essentiellement l'encapsulation.
Le système va regarder, avec des fonctionnalités
introspectives, il va me montrer les valeurs de mes champs.
C'est très pratique cette vue.
Mais maintenant ce que fait le nouvel inspecteur c'est plus.
Ça veut dire que chaque objet va pouvoir présenter à l'utilisateur
différents facets de comment il va être représenté.
Tous les objets ont par défaut le facet brut, Raw.
Vous avez aussi le facet Meta, donc le facet Meta c'est
ce qui permet de browser la classe.
On peut browser la classe rapidement, par exemple, comme ça.
Normalement, c'est juste pour quand on est dans le flot
de la navigation, de pouvoir savoir directement sans
ouvrir un autre browser.
Mais le plus important, ce sont les autres onglets.
Là, par exemple,
l’inspecteur sachant qu'on a une référence,
un dossier, nous montre tout ce que contient le dossier.
C'était ce que je vous ai montré ici quand j'ai fait ça.
Là, on obtient la même chose.
Maintenant, on va pouvoir naviguer à l'intérieur de
ce système de fichiers.
Là, si je prends Ston, c'est l'équivalent de Json en Pharo.
Là, encore une fois, j'obtiens une
référence à l'intérieur du système de fichiers, qui est
ce fichier-là, j'obtiens un accès sur le
fichier qui s'appelle
meta-inf.ston. Et maintenant l'inspecteur est
intelligent il et me dit, je vais te montrer son contenu si tu veux.
Je regarde son contenu et il se trouve que j'ai un
contenu, je ne sais pas exactement à quoi ça sert, mais c'est un contenu.
De la même manière, je vais pouvoir naviguer mes sous-dossiers.
Là, si je fais package-cash, c'est l'endroit où les
packages sont stockés par défaut.
Effectivement, c'est toujours un objet du système de
fichiers mais il me montre son contenu.
Si je regarde dans Data, je vois
un png. Si je clique sur le png, je vais naviguer.
Là, vous voyez qu'il y a d'autres onglets.
Il y a l'onglet Content.
Si je clique sur Content qu'est-ce que je vois, je vois
le png tel que stocké sous forme binaire sur mon disque.
Comme c'est un png, l'inspecteur me montre une preview de
ce que contient le png.
Si je regarde le script.st
par exemple, j'aurai des panes qui sont différents.
Là, il y en a deux, je ne sais pas exactement pourquoi
mais il y en a un avec du syntax highlighting et l'autre
sans, qui me montre le contenu encore une fois.
Si c'est un zip, c'est encore mieux parce que quand je
clique sur un zip, le contenu du zip est encodé
et compressé mais les items, à ce moment là, sont
interprétés. Là, je vais pouvoir naviguer directement
mes objets et de la même manière récursivement.
C'était pour vous montrer que l'inspecteur de Pharo est
vraiment un outil très puissant, pour aller interagir
avec des objets de manière fine, et en plus comme chaque
objet va définir une représentation ou l'ensemble des
représentations qui font du sens, pour qu'on puisse
interagir avec et qu'on soit le plus efficace possible,
ça permet de très rapidement construire des petits outils.
Là, on a un petit navigateur de systèmes de fichiers, pourquoi?
Parce que quand on navigue et qu'on est en train d'inspecter
le système de fichiers, parfois, on veut savoir ce qu'on
est vraiment en train d'inspecter.