I forgot to add

each ast allChildren anySatisfy: [ : node | node isCascade ]

which in that case, there is no method in the Pharo 3 image. Maybe a package out there...
Anyway, who can load all packages? :)

Hern��n

PS: One problem with StackExchange is there are very few smalltalkers registered.



2014-07-08 21:20 GMT-03:00 Hern��n Morales Durand <hernan.morales@gmail.com>:
Hello Martin,

I have refined the search a little bit, and we have a new winner with Stephane Ducasse as author in annotations.
��
PSMCMergeMorph>>model: aMerger
������ "Set the model and update the window."

������ |grouped sorted|
������ super model: aMerger.
������ grouped := aMerger operations
������ ������ groupBy: [:o | o targetClassName ifNil: [o shortSummary]]
������ ������ having: [:g | true].
������ sorted := OrderedCollection new.
������ grouped keys asSortedCollection do: [:k |
������ ������ sorted addAll: ((grouped at: k) asSortedCollection: [:a :b | a shortSummary <= b shortSummary])].������ ������
������ self patchMorph model: sorted

This is the code I have used:

| allMethods |
allMethods := SystemNavigation default allMethods.
UIManager default displayProgress: 'Scanning all methods...'
������ from: 1
������ to: allMethods size
������ during: [ : bar | | current |
������ ������ current := 0.
������ ������ allMethods select: [ : each |
������ ������ ������ current := current + 1.��
������ ������ ������ bar value: current.
������ ������ ������ each ast arguments notEmpty and: [
������ ������ ������ (each ast allChildren anySatisfy: #isAssignment) and: [
������ ������ ������ (each ast allChildren anySatisfy: #isBlock) and: [
������ ������ ������ each ast temporaries notEmpty and: [
������ ������ ������ each ast superMessages notEmpty and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isMessage and: [ node selector isUnary ] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isMessage and: [ node selector isBinary ] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isBlock and: [ node arguments size = 2] ]) and: [
������ ������ ������ (each ast allChildren anySatisfy: [ : node | node isBlock and: [ node arguments size = 1] ])������
������ ������ ������ ������ ] ] ] ] ] ] ] ] ] ].

Cheers,

Hern��n



2014-07-08 18:48 GMT-03:00 MartinW <wm@fastmail.fm>:

I removed the question, but only after it was already marked to be closed by
several people. Their argument was, that the question was "to broad". Once a
discussion like this starts on Stackexchange sites there's always a herd
behavior that's hard to stop.

Can you share the code you used for your search, Hern��n?


Hern��n Morales Durand wrote
> The contest is gone?
>
> Anyway, the closest useful method I have found by iterating all ASTs in
> standard 3.0 image :
>
> - Declares arguments
> - Has assignment
> - Has sequence
> - Has blocks with 0 and 2 arguments
> - Declares temporaries
> - Has binary messages
> - Has unary messages
> - Has keyword messages
> - Has super messages
> - Has cascade
> - Has return
> - Uses String and Integer





--
View this message in context: http://forum.world.st/Smalltalk-Syntax-in-a-Postcard-contest-tp4766793p4767121.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.