Latest code for Modules
Last updated at 5:15 pm UTC on 16 January 2006
This is a page to upload your latest code. All code that is not yet out in the public updates should be stored here. Please put your code here so that everyone working on the issue is up to date.
Module Age Browser
A browser for the age of modules (what else). The browser is intended to allow working in some "current module" tracking all the changes and dependencies as they are introduced. The browser assumes STRONG modules everywhere in order to be able to track the dependencies accordingly. This is still experimental stuff so you have been warned.
Latest version: MABrowser.cs
Using the MABrowser
Version Numbering and Version History
This change set includes two classes, VersionNumber and VersionHistory. VersionNumber implements a version numbering system that uses an algorithm to generate predecessor and successor versions for any given version. It accommodates branching. See the class comments for more details.
VersionHistory implements a collection of VersionNumbers with rules enforcing how versions are added and removed. See the class comments for more details.
Latest Version: VersionNumber.cs
Module AddOn used by Module Age Browser
Lastest version: ModuleAddOn.cs
Various small additions to the modules API
A few collected utility methods I found useful.
A simple way to move classes:
Celeste moveTo: aModule.
A simple, useful sanity test -
rounding out the iteration protocols:
aModule deepGlobalReferencesDo: [:a :b :c | block]
1. A menu item to quickly access any url's you find in text
2. A simple, way to load a module, using a new url format. Load the
changeset, and then-
Which should load a simple but working module into your image. It's possible the load might fail - just choose abandon when the debugger comes, and url-it again. I think it's related to clean images not having the dvf module, but I'm not sure. Anyway, not related to the enh at hand.
The purpose of these tests is multiple. It contains :
- method testings (such as testLocalUnresolvedRefsWithScheme or testMoveNameToModule)
- scenario describing some useful process (such as testDeltaModules)
- possible bugs (such as testExportsNameBUG)
I think it is a good start for learning modules at a less theorical level. Tests are some very accurate vector for explaining and describing some concept. Please, use it and improve it.
For people who do not know the sunit Framework. Doit 'TestRunner open' in a workspace, and then search SimpleTestModule, and then press run.
The changeset define some new methods for the class Module such as (importName: , importNameForModule: , importName:interactive:) and what could be fix (personnaly I do not like the notice when I try to create a class with a name already existing).
Free to add new tests ! Last update 9July02 : SimpleTestModule.cs
I have completely remade ModuleTool with focusing about dependencies between module. It do not have the shape I want to give to it, but I still want to share it in order to debat on it.
I didn't work about loading/saving, so some functions may not work.
A short demo :
- Load the change set, and doit 'ModuleTool open'
- Press "List" and add 'People Ab' (without the quote), 'People Ab' and 'People Ab ModuleTool' should be displayed
- Press on 'People Ab ModuleTool' and click on the scrollbar to get a menu. For this one you can : get unresolved references show dependencies, show external references, and see deltamodules related to it (try this with the ModuleAgeBrowser)
- Click on 'show unresolved reference', you get a little popup window. The result contained in these last do not make really sense, because the application is running correctly, so the dependencies are resolved. I will fix that.
- Let assume no reference is resolved, so, in the popup window you get all the external references (because nothing is resolved). Get the menu (without selecting anything) and press on (the only item) 'resolve automaticaly all symbols'
- Okay, close the popup, and try to get one more time the unresolved references for 'People Ab ModuleTool'. Nothing, just a beep, normal all references are resolved
- Now, get the dependencies for this module, you will have a list of all modules used by 'People Ab ModuleTool'
- Select the first, which should be #(Squeak Language Core Classes), and press 'remove' on the related menu
- Close the popup window
- Get one more time the unresolved references and you will get 'Behavior in ModuleTool>>unreferencedSymbolForCompiledMethod:'. From the menu you can browse this method to check I use the class Behavior in it.
- Automatic revole this reference (you can notice the module #(Squeak Language Core Classes) is now referenced in the dependencies of 'People Ab ModuleTool'
It is clearly not finished, but I want it to produce some discution
Last update 9July02 : ModuleTool.cs