Hi eliot

We worked on Ring for more than a year and it is a complete source code meta 
model and it is just 
to remove pseudo class and the rest. 
We should check for the TextReference idea.

Stef

> On Sun, Feb 10, 2013 at 8:42 AM, Frank Shearar <frank.shea...@gmail.com> 
> wrote:
> On 10 February 2013 16:25, Camillo Bruni <camillobr...@gmail.com> wrote:
> > Why does SystemNavigation >> #allSelect: return strings of the form 'Array 
> > at:' instead of the real methods?
> 
> Probably because the things that use SystemNavigation - Browsers,
> MessageSets and the like - want to render lists of things to the user.
> 
> There is one advantage to dumb strings, which is that it's easy to
> make a SystemNavigation that works against a remote image. But that's
> not much to go on. Changing these kinds of methods to return
> MethodReferences might be a useful middle ground (and permit easy
> extension to remote tools).
> 
> No, dumb strings are dumb.  A className, selector pair (which is what 
> MethodReference is) is the right thing (and what systemNavigation methods 
> return).  The dumb strings are a pain in the ass to parse (endlessly looking 
> for ' class' to spot meta classes etc).  Whereas the class,selector p[air 
> approach is extensible, e.g. to include a pointer to a specific external 
> entity (be it Monticello package or remote image).  MethodReference is what 
> the system has provided for a decade and they're convenient.  There are 
> multiple versions of these and I could care less about whether one uses 
> MethodReference or RBMethodDefinition.  But that they have a consistent API 
> is really important.  Programmatic uses of these things for code editing is 
> something I've depended upon in the VMMaker, and I'm anxious that Pharo and 
> Squeak don't diverge hopelssly on this level of the system.
> 
> In my own work I've ended up with three kinds of code reference object
> 
> a) MethodReference that points to a class,selector pair
> b) ClassReference that points to a class
> c) TextReference that holds onto a text
> 
> So if one wants to check out a refactoring/edit before applying it one 
> compares a sequence of MethodReference objects and a matching sequence of 
> TextReference objects that hold onto the edited source to a comparison engine.
> 
> If one wants to have a look at all uses of a SharedPool one can supply a list 
> of ClassReference objects to a list browser.
> 
> If one wanted to build a "compare two images" or "compare arbitrary package 
> versions: facility one can extend the reference objects with pointers to 
> specific packages or remote images.
> 
> etc.
> 
> Lots of stuff in the system depends on these kinds of pointer; message list 
> browsers, Monticello's loader, etc.
> 
> What's insane is a) not having a standard set of facilities common between 
> Pharo and Squeak with a well-defined API (e.g. isCodeReference, 
> isMethodReference, isClassReference), b) having some of the API in extension 
> methods in e.g. Monticello.
> 
> This is core reflection protocol and it needs to be well-defined and in what 
> ever package contains base reflection protocol.
> 
> 
> excuse my ranting.
> 
> 
> I mention remote tools because I hacked up a proof of concept a while
> back that turned a Browser into one that could access a suitably
> prepared image through an HTTP API. Development stalled because the
> reflection machinery's API is a bit... involved, and it was dog slow,
> but I could browse anything I liked. I should really wrap up the work
> a bit so I can spread the love.
> 
> frank
> 
> 
> 
> 
> -- 
> best,
> Eliot

Reply via email to