[self-interest] How to export sources as text
Jecel Assumpcao Jr
jecel at merlintec.com
Wed Jun 27 23:15:50 UTC 2001
if you execute
inspect: traits morph
you will get a reasonable print out in the terminal window where you
started Self. Depending on the GUI you are using, the easiest solution
is to copy the result and paste it into some text editor. 'inspect:' is
implemented in defaultBehavior and uses 'inspectReflectee:', which
unfortunately uses 'print' so it can't send the output to a file
instead of the terminal. It would be easy to copy this method to change
But Self includes a sophisticated text export and import mechanism
called "the transporter". Every object and every slot can be annotated
as belonging to some "module" which is associated with a .self source
file. This means that a single object can have its definition divided
among several modules (files), each dealing with a different aspect of
it. And a module can include the (partial) definition for many objects.
If you look at the result of the "inspect: traits morph" above or if
you open up an outliner on traits morph (just type "traits morph" in
any evaluator and press the "get it" button. Then press the small
triangle in the result to open it up) you will see "9 modules".
The traits morph object itself is defined in module "morph", but its
slots belong to the "activity", "editorMorph", "morph", "morphSaving",
"outliner", "structuredEditing", "ui2Button", "ui2Menu" and
"webBrowser" modules. All you have to do is execute expressions like
modules morph fileOut
and you will have a "morph.self" file (it will be in a ui2
subdirectory, and if you don't have that you might get an error). I
find these files far less readable than what it generated by 'inspect:'
since there is a lot of slot declaration overhead, but the method
sources themselves are the same.
A more graphical way of doing this is to point to the background and
choose "changed modules" from the middle button menu. A pink object
should appear, but unless you have changed something it will be empty.
You can use the middle button on it to choose "All Modules" which will
give you an outliner view of all modules in the system. You can expand
a few levels to get to morph (all2->allUI2) and just press the small
"w" button beside it to write out the file.
More information about the Self-interest