Exploring extension methods to the base image

Glamorous Toolkit adds several extensions to the base Pharo image. This page shows a quick overview of those extension methods.

It also provides an analysis to detect which of those extension methods replace or override methods in the base Pharo image.

Extension methods to the base image

GtExtensionMethodsProjectBuilder Object subclass: #GtExtensionMethodsProjectBuilder instanceVariableNames: '' classVariableNames: '' package: 'GToolkit-Utility-ExtensionMethodsAnalysis' computes extension methods added from any project loaded by Glamorous Toolkit to classes from the base Pharo image.

There are 2601 extension methods from 158 packages in 67 repositories.

We can browse them by the repository that defines them.

We can also browse them by the package that defines them.

This information can also be extracted using the code snippet below:

 GtExtensionMethodsProjectBuilder forGToolkit.
  

The above views are using a cache in GtExtensionMethodsGToolkitMetrics Object subclass: #GtExtensionMethodsGToolkitMetrics instanceVariableNames: 'gtoolkitProject' classVariableNames: '' package: 'GToolkit-Utility-ExtensionMethodsAnalysis' . To update the computed values we should reset the cache using the snippet below.

GtExtensionMethodsGToolkitMetrics cleanUp.
  

Extension methods replacing or overriding methods

Some extension methods replace methods from the base image, or are added to subclasses overriding methods.

The class GtExtensionMethodsBaseImageOverridesBuilder Object subclass: #GtExtensionMethodsBaseImageOverridesBuilder instanceVariableNames: 'imageName imageUrl imageArchiveName' classVariableNames: '' package: 'GToolkit-Utility-ExtensionMethodsAnalysis' performs an analysis that extracts these extension methods. This analysis :

- downloads the base Pharo image used to create this image

- extracts the list of extensions methods added to the base Pharo image (the one shows above)

- runs a script in the base image that detects replaced or override methods.

GtExtensionMethodsBaseImageOverridesBuilder forGToolkit
  

We can also run this analysis on top of other base images.

builder := GtExtensionMethodsBaseImageOverridesBuilder new.
builder 
	imageName: 'Pharo11-SNAPSHOT-64bit-53659ed.image';
	imageArchiveName: 'Pharo11-SNAPSHOT.build.700.sha.53659ed.arch.64bit.zip';
	imageUrl: 'https://files.pharo.org/image/110/Pharo11-SNAPSHOT.build.700.sha.53659ed.arch.64bit.zip'.

wrapper := builder buildWrapperForGToolkit