diff -r 79fab5be96bb -r 36908309a12c Tools__ClassSorter.st --- a/Tools__ClassSorter.st Wed Jul 26 17:35:18 2017 +0200 +++ b/Tools__ClassSorter.st Thu Jul 27 09:38:48 2017 +0200 @@ -1,3 +1,5 @@ +"{ Encoding: utf8 }" + " COPYRIGHT (c) 2006 by eXept Software AG All Rights Reserved @@ -48,19 +50,20 @@ !ClassSorter methodsFor:'filtering'! sort: classes - "Sort nodes according to their position in the class hierarchy" + "Sort nodes according to their position in the class hierarchy" + + | supersChain | - | supersChain | - self initializeResults. - classes do: - [:class | - supersChain := class withAllSuperclasses reversed. - supersChain removeAllSuchThat: [:cl | (classes includes: cl) not]. - order add: supersChain "contents" -> class]. - self buildIndentIndex. - ^self collectSortedClasses + self initializeResults. + classes do:[:eachClass | + supersChain := eachClass withAllSuperclasses intersect:classes. + order add: supersChain reverse "contents" -> eachClass + ]. + self buildIndentIndex. + ^ self collectSortedClasses "Modified: / 21-01-2008 / 19:43:24 / janfrog" + "Modified: / 27-07-2017 / 09:38:20 / stefan" ! ! !ClassSorter methodsFor:'private'! @@ -71,9 +74,10 @@ ! collectSortedClasses - ^order asArray collect: [:assoc | assoc value] + ^ order collect:[:assoc | assoc value] as:Array "Created: / 21-01-2008 / 19:41:54 / janfrog" + "Modified (format): / 25-07-2017 / 18:05:14 / stefan" ! initializeResults @@ -95,9 +99,10 @@ !ClassSorter class methodsFor:'documentation'! version_CVS - ^ '$Header: /cvs/stx/stx/libtool/Tools__ClassSorter.st,v 1.1 2011-07-01 13:28:45 cg Exp $' + ^ '$Header$' ! version_SVN - ^ '§Id: Tools__ClassSorter.st 7486 2009-10-26 22:06:24Z vranyj1 §' + ^ '$Id$' ! ! +