[Pharo-project] How to filter out method extensions in Ring?
Hello all, You may help me on this one. I want to filter out method selectors which are extensions of a particular class. For example, in Pharo 1.4 the ArrayedCollection class has these selectors: ArrayedCollection selectors asSortedCollection I would want all of them except #writeOnGZIPByteStream: which is in "Compression" package. I did a try to Ring ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition class: ArrayedCollection selector: each ] with MethodReference I did : ... ( each category beginsWith: '*' ) not ... but it seems not supported in Ring? Any hints? Cheers, Hernán
Hi Hernan, Sorry, I have been totally disconnected because of my thesis. Ok I quickly reply... You need to instantiate methods with #realClass:selector: to manipulate objects from the image.. otherwise, they are static (within a ring source model). The category is not assigned then is not possible to know if they are from a class extension. ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition realClass: ArrayedCollection selector: each ] then you can use: aRGMethod isExtension Cheers, Veronica On 23 Jul 2012, at 13:45, Hernán Morales Durand wrote:
Hello all, You may help me on this one. I want to filter out method selectors which are extensions of a particular class. For example, in Pharo 1.4 the ArrayedCollection class has these selectors: ArrayedCollection selectors asSortedCollection
I would want all of them except #writeOnGZIPByteStream: which is in "Compression" package. I did a try to Ring
ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition class: ArrayedCollection selector: each ]
with MethodReference I did :
... ( each category beginsWith: '*' ) not ...
but it seems not supported in Ring? Any hints?
Cheers,
Hernán
Thanks Verónica, now it works fine. I have one more question :) it is possible with Ring to query if a package is a "system" package? (included in the downloaded image). We've been talking about that feature in the list http://lists.gforge.inria.fr/pipermail/pharo-project/2009-December/018168.ht... no solution was proposed. Hernán 2012/7/25 Veronica Isabel Uquillas Gomez <vuquilla@vub.ac.be>
Hi Hernan,
Sorry, I have been totally disconnected because of my thesis.
Ok I quickly reply... You need to instantiate methods with #realClass:selector: to manipulate objects from the image.. otherwise, they are static (within a ring source model). The category is not assigned then is not possible to know if they are from a class extension.
ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition realClass: ArrayedCollection selector: each ]
then you can use: aRGMethod isExtension
Cheers, Veronica
On 23 Jul 2012, at 13:45, Hernán Morales Durand wrote:
Hello all, You may help me on this one. I want to filter out method selectors which are extensions of a particular class. For example, in Pharo 1.4 the ArrayedCollection class has these selectors: ArrayedCollection selectors asSortedCollection
I would want all of them except #writeOnGZIPByteStream: which is in "Compression" package. I did a try to Ring
ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition class: ArrayedCollection selector: each ]
with MethodReference I did :
... ( each category beginsWith: '*' ) not ...
but it seems not supported in Ring? Any hints?
Cheers,
Hernán
No since this is not available in the image. Now if you implement it somewhere we could set the package information somewhere. On Jul 25, 2012, at 8:25 PM, Hernán Morales Durand wrote:
Thanks Verónica, now it works fine.
I have one more question :) it is possible with Ring to query if a package is a "system" package? (included in the downloaded image). We've been talking about that feature in the list http://lists.gforge.inria.fr/pipermail/pharo-project/2009-December/018168.ht... but no solution was proposed.
Hernán
2012/7/25 Veronica Isabel Uquillas Gomez <vuquilla@vub.ac.be> Hi Hernan,
Sorry, I have been totally disconnected because of my thesis.
Ok I quickly reply... You need to instantiate methods with #realClass:selector: to manipulate objects from the image.. otherwise, they are static (within a ring source model). The category is not assigned then is not possible to know if they are from a class extension.
ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition realClass: ArrayedCollection selector: each ]
then you can use: aRGMethod isExtension
Cheers, Veronica
On 23 Jul 2012, at 13:45, Hernán Morales Durand wrote:
Hello all, You may help me on this one. I want to filter out method selectors which are extensions of a particular class. For example, in Pharo 1.4 the ArrayedCollection class has these selectors: ArrayedCollection selectors asSortedCollection
I would want all of them except #writeOnGZIPByteStream: which is in "Compression" package. I did a try to Ring
ArrayedCollection selectors asSortedCollection collect: [ : each | RGMethodDefinition class: ArrayedCollection selector: each ]
with MethodReference I did :
... ( each category beginsWith: '*' ) not ...
but it seems not supported in Ring? Any hints?
Cheers,
Hernán
participants (3)
-
Hernán Morales Durand -
Stéphane Ducasse -
Veronica Isabel Uquillas Gomez