En este video, Me gustaría mostrarte cómo
un objeto puede definir pestañas mostradas en el inspector.
¿Cómo lo veremos?
Vamos a usar Spotter para hacerlo.
En Spotter recuerdo que busco un #pragma
una anotación de método, comenzando con gt.
Sé que hay un "inspector" dentro así que voy a ver esto.
En mi inspector puedo ver que hay #Pragmas y
#Senders, guardo el #Pragma.
Ahora puedo buscar por ejemplo en
Morph.
Abrimos el código.
Este es el que corresponde a ... ¿Recuerdas? Si hago
"Inspect", abre un inspector y
este inspector tiene esta pestaña,
comparemos.
Ves que creamos un 'Morph' compuesto, hay
un título y habrá una acción realizada con
manejo de errores en el caso el 'Morph' no se muestre bien.
Convertimos y mostramos un 'Morph'.
También tienes "act", que es el camino para
asociando operaciones a
esta pestaña.
Veamos otro ejemplo.
Aquí y allá.
Quiero ver "Date".
Si recuerdas, teníamos "Date today inspect".
Tuvimos detalles y calendario. 29 00:02:09,130 ​​-> 00:02:11,740 ¿Cómo crear este 'Morph'?
Simplemente crea el 'Morph' usando este mensaje.
Y Detalles, ¿cómo funciona?
Solicito la creación de una tabla, Le asigno un
título, valor clave, evaluo, retorno
la clave y calculo el valor.
El último ejemplo que quería mostrarte es:
que pasa cuando haces el trabajo que hace
por un inspector de métodos?
Recuerdas, teníamos un método que era
Bytecode, al menos una tabla que contiene Bytecode y
teníamos la Fuente o el AST o Bytecode.
Echemos un vistazo a AST. Voy a pregúntale a mi querido
Spotter. Voy a buscar Compiled method.
Consideremos la fuente,
parece bien.
Para las fuentes, que es este panel aquí, podemos
ver que definimos la fuente y aquí hay un pharoMethod.
No sé exactamente qué es pero debe decir
que tiene que crear un objeto capaz de mostrar
un método Pharo, llamando al el Sintax Highlighter o
algo como esto. Y si miro a AST,
retorna
un árbol,
devuelve el AST que se mostrará en el árbol.
El objetivo no es que entiendas precisamente
cómo funciona, es mostrarte un poco
la complejidad de esta cosa.
Ves que en general no es muy complicado
Aquí, es para el Bytecode, El IR es otra cosa.
Además, hay lógica adentro porque
tengo que pensar en cómo calcula la representación
intermedia, etc. Pero todavía es algo manejable.
Quería mostrarte esto porque es lindo, puedes hacerlo
en tus objetos y
te permite ir más rápido.