In an other thread Steve Davies mentions that Pharo can be a bit
overwhelming. Indeed I have had the same feeling.

I was struggling for weeks (not every day, but still) to find out how to
change the system to be able to give background color to text.

As part of my attempt at understanding the code, I ended up looking at
Rubric and its Text morphs. I have been working at building a little tool
which can help me get an overview of the objects and how the are connected.
Not a static code analysis, but a snapshot view.

What I did was I took a root object, and made the transitive object closure
from that object, with the following restrictions:
- Only Rubric, Morphic and Collections are examined, though Strings are
excluded
- Only instance variables which has a selector of the same name are included
- The same object only appear once in the diagram, but more than one
instance of a class can be present (at different places).

I build on a tool named PlantUML.

When I bring up the morphic halo on a playground and select "inspect
morph", and then draw the diagram for that morph, I get this diagram
<https://www.plantuml.com/plantuml/svg/ZLfFZzks4h_lfp1oUdieG54aHVNmq6IJea4RTD4jyCvQMzdLYsmPifncltr7iZYS6L7hFHamvpSav_yCzSjfgFhXl6zlRePcQEjDjVdh_FYmxRkshNT_rp-6Brr_VFvFMPQkB4gjRczkkiV_rzjXymu8Hu8_caFzRbETDl2_YgiJxjEFeJwSckuG26pkjRVAkaZuULyzrHDr8CfANIXTQCBjOL-rxUTTVO1JldnijWFmhFeNH3YTErFc1F6-xwkuNkIPCzOOTlhxgg-U-YfkN7ezxgpygvSioB6wVgXtTwEmfYC54cTrcIdA9oqEu-6MPUdvkO2ihnxgcUV7UjlrrT3rU1cL5IhF2otPDzjFtq52lrM7NLiZUPvRwtFZ_MiYBvGj2bLOlIP02n8i7HVCmtDt7Xw65zXiSSZ2gp8hbL4CyNxNzOSzdF5ZSpgsrKiyfSkpJ9VAYnr6jGzL--tJhY7CTUwjpfoY1d84yb-Rm-wl6XXlwuUw_zviKMSQZACq9jUC_TqpMC1sgFiFRRVzXWBBR6P052fz572EvZWqXwSltIxQXFMbjKpZJ7wkp7AjnUtk-sOFHeoQPXh9jNCP75fViw7IUsrqLhYhlcUiTuxf-4FNx-g-th6TdIjDgHX3RWjWJUF9hbktjc1NeAWt-x4VUSC9kPf6vOEyt_TrXPS66bCo2n0E3oSqnfbhPzJEP8Mn2p6dVQai2rTgLrnLIcvL3YQNhVgJCOK7dypVB1fjGU9PvkqYDbryOxDjgzCfXj2iB6Yu-tmurSD5tQXdOvJsJikWlH96HlVtXI8y7vhziQq5Ks_17Dz0G-xnTryTJb-xVl-_PdZ-etg1gC9T8IyLE8-vQd3WCva2DnUUEsMp3nNkR_8yywQWqIpf20QIbJ9BRQS5117CGc2wQd7UALU2s2LXcglFbGTDqi2Ii0qu9fXnocaUXch0A6L1FCxAT7DtxdlOU4nn8AH59BTPNkQ5k-vAESZAAUFLma8l6hYlOWw5U0WUuWkzeBthziVkL9DORyinVRybSfUb0grcYyIO28KcSw2hg_NAI6Co5iBIX4v1ndEiPk4E3oBaYPwP6cZ6-epLHQyPXGUTA1QqKdPU571opvBUdnSpNrOi6hQ7KAYjD8qJAJp03g7EkYfTIFsk04DpL_mBYgJIvdejP-eCXAQqMHFfMAkz8d1OXg11DRSiA6JGr4hRjsShS2KrnkGrfMOsLndtz7ISKTvOiF3LYrfWevay-Rg3h6cKusxzvx4-G02uQxiJ_7oissRV38bApKBjx8j5RITRWEXZSoVmjeIf8C6wmbyJ0TIqKCDxLY6nEqB5aOqzmQgsBRYGfo9QDVMYo0jhYwlnp07BqIMkrpaEQcSk_qiMk--xOzqFJOqc1YMB6sjn8hrNKZwKn4gfh7opHHe3BGml4fBYXcgqrBbwOsOhNGvk3qvzJH15viUOCv5X4xTvbxtR_FJJVxcbCugVDzdjflldKFVJ_w5P2wZOd7IaHwDyOpd8A2Q-0rZmM3eAi4Pmp302h6ytspaRtNIngGkusB9qf9DZrqLrC8hBTOVdkey6SjFHneuoYVx9IIOk1xZS3HKHsnxh5qOXf3rtTd6xa8aIYqn_sEAnqsArm2ZOOL5m51XhDqOn0UjWQ08TTHYZaa1hSbLi6rTD9r8iJ8U0YUcWXmemRBkhlrRdTlYzVjbNnoE4uC-7NVr3iCeZA-nG1QlyTlDrqTUEHDYdqkieleBN6AkxIIMXKLsLGQHOo21qiKaSDgoKSomh6CN4-Vje-TkBwHEmJX-BWZK_5W57USOoMu1pOKy4RQvlROWzOUVDP8aHdb5CDsv5LX1CuirZPI6Ow6JW83oY0EPEJ320spzE6M6QsuohE1QWjvXRDBOyNM4T74yV9qu23wUlINwPJ2eC6-Zk8O-mzKGaYDYuUIow19f60fnCq5tZy85Hh4LhD14cD-nh6CN4uuHTa83hT12WSBqM10YRgFeuZH9iHjk_z8NZy4hWe_N7mOt06w41WhOhoPYWxUtcgHw-r8VpVTSssnV1mKKTXaP3C72GaAUEH22BY9nBU04iBlVk-hkntXTe7-M6Gqk1zxUROnWM2tH9p3wCAGIwf363M8qYEJuqvj9i56fiwkGb2n9fSIOgMMJXyX9Cx6vkfIGKpEvqVjoFnTwbGWbZDRHtd1LsP9QsY2I6BwSY2G6JE1XcAWAU22GuSKjl7fTJcnCmhId2i4_W4xlFypPMVOMEXInVui3vSMexvymNh4Q4aSkuc144TDG70STpnqS5WTOoyqLqdevW59tJ-1acQFJG-4R029Q79c1DFI2MdHIjHzTxciU_0XvFZQC4WOP3dzfcjpYrIT-NGY7MxI58jW9fIP8E_Q50MY5dhCEPjF19Yb6an8Leuh0ujXPegME29la11qC2JNMC1HIlvy8Kcb6ivKZ2GoUSaZBGozeY14NM9k3Z3AEO3h2l-c_JF52WgKk70Q50ZrRMDOSX1OzoYrDx0H_pwlxuN9sQqs_GR4_BeH5YIezFTuo4jqV18jczQNA95AImcEkf2DPfVLCmNFlxPTBpM4auQKrmlYJWkJ1LWYQbD6lD29gMqWGP7IpEwGKI7EnvxTYnYeXZ6G5tmaTm0C1KHNKTAIvLgD0rOK25Fe-P11vata8pTgb2WZqkMhYuicZXS7ZDYbSS2JEAot5bgWn3xPLKYSl9L1d1fEB7no61JrNyOLAUxZVYScft0ewxnpSIWKybwdaEdsmNv28Re626ul4mZ6OPnJAA4pGvE0xA1Lf6SOBEq-v1qJIAe-ipsmwF4OnWUMW2NccmA7gHgGaydZgE7WMSfMe2NKdL54fJDK76I1BVUmHIfkhGUR2H5dwpGWcMxMZ4hemm29OsesW5QNUCooc7862oAmvi1JxX4A5oOflZOnObMDuuOlMALKOi6yHTsWqo-fi_TLYkqLOGdtII1h5SfVFPkJ5alZk_cfBLwOfJSNxVTIt34GUOtzOPRkgKeFBPXWOJWIIFueCMW-Qo9K0Fu_LY-AA1KIoTbg19WCPtJ86MaOQWL-f5YcOzGPWDirFZkmoZI5Iv4KrEZLzH2FIYoetebVX8qVJK6C19YHPUecZfawp3S3JF1e3u4HcZO2KUraJhioEaICsE8fmuFNu79E1IM0HDIbjyBXLeMUCHD8dCuNit0OR0t9yXq8JdZLcohB35hmOuIIA-4lnAuyZmRE0tD-E9EH6QA5cRFp_iOXM7hZ3L6A7pOth7fqv6aQp0i3Hble8VCJAAjTuAtnuGZzzbqJJBCXb-0SOebg8cw9KkWgAfeEVHBRDh_Cw8h2zosSqlzM4tVeZwBm00>
.

Strangely, I find it useful. I use it as a supplement to the inspector.

I hope to be able to pack this tool, and a companion one for generating
sequence diagrams based on the execution of a block given as parameter. I
see these tools as exploratory tools, not as documentation tools.

Best,

Kasper,

Reply via email to