Smalltalk.st
branchjv
changeset 18045 c0c600e0d3b3
parent 18043 03660093fe98
parent 15099 298c16751bb1
child 18054 56594a8c6b83
--- a/Smalltalk.st	Tue Apr 16 14:27:04 2013 +0200
+++ b/Smalltalk.st	Thu Apr 18 20:41:50 2013 +0200
@@ -670,16 +670,6 @@
 
 !Smalltalk class methodsFor:'Compatibility-Squeak'!
 
-at:aKey ifAbsentPut:aBlock
-    "return the element indexed by aKey if present,
-     if not present, store the result of evaluating valueBlock
-     under aKey and return it."
-
-    ^ self at:aKey ifAbsent:[ self at:aKey put:aBlock value ].
-
-    "Created: / 29-05-2007 / 12:41:12 / cg"
-!
-
 beep
     Screen current beep
 !
@@ -764,41 +754,11 @@
     oldClass removeFromSystem
 !
 
-renameClassNamed:oldName as:newName
-    self renameClass:(self at:oldName) to:newName
-!
-
-unregisterExternalObject: anObject
-    "Unregister the given object in the external objects array.
-     Do nothing if it isn't registered."
-
-    |objects|
-
-    anObject isNil ifTrue:[^ self].
-    objects := SpecialObjectArray.
-    1 to: objects size do: [:i |
-	(objects at: i) == anObject ifTrue: [
-	    objects at: i put: nil
-	]
-    ].
-!
-
-windowSystemName
-    "not yet fully implemented (I have to figure out, what squeak returns in each case...)"
-
-    |platformName|
-
-    platformName := Screen current platformName.
-    platformName = #WIN32 ifTrue:[
-	^ #Win32.
-    ].
-    ^ platformName.
-
-    "
-     Smalltalk windowSystemName
-				-> 'Win32'
-    "
-! !
+
+
+
+
+ !
 
 
 !Smalltalk class methodsFor:'Compatibility-V''Age'!
@@ -943,6 +903,16 @@
     "
 !
 
+at:aKey ifAbsentPut:aBlock
+    "return the element indexed by aKey if present,
+     if not present, store the result of evaluating valueBlock
+     under aKey and return it."
+
+    ^ self at:aKey ifAbsent:[ self at:aKey put:aBlock value ].
+
+    "Created: / 29-05-2007 / 12:41:12 / cg"
+!
+
 at:aKey ifPresent:aBlock
     "try to retrieve the value stored at aKey.
      If there is nothing stored under this key, do nothing.
@@ -2857,6 +2827,27 @@
     "Modified: / 10-11-2006 / 17:24:00 / cg"
 !
 
+allExtensions
+    "return a collection of all extension methods (methods added from another package)"
+
+    |methods|
+
+    methods := OrderedCollection new.
+    self allClassesDo:[:eachClass |
+        |classPackage|
+
+        classPackage := eachClass package.
+        eachClass instAndClassMethodsDo:[:mthd |
+            mthd package ~= classPackage ifTrue:[ methods add:mthd ].
+        ].
+    ].
+    ^ methods
+
+    "
+     Smalltalk allExtensions
+    "
+!
+
 allExtensionsForPackage:aProjectID
     "return a collection of all extension methods for a given projectID"
 
@@ -5703,6 +5694,9 @@
                     packageDir isNil ifTrue:[
                         packageDir := self packageDirectoryForPackageId:package
                     ].
+                    packageDir notNil ifTrue:[
+                        packageDir := packageDir asFilename.
+                    ].    
                 ].
 
                 Class packageQuerySignal answer:package do:[
@@ -5764,22 +5758,22 @@
                     "
                     ok ifFalse:[
                         (packageDir notNil and:[BinaryObjectStorage notNil]) ifTrue:[
-                            packageFile := self getPackageFileName:(packageDir , '/classes/' , classFileName , '.cls').
+                            packageFile := self getPackageFileName:((packageDir / 'classes' / classFileName) addSuffix:'cls').
                             packageFile isNil ifTrue:[
-                                packageFile := (packageDir , '/classes/' , classFileName , '.cls').
+                                packageFile := (packageDir / 'classes' / classFileName) addSuffix:'cls'.
                             ].
                             (ok := self fileIn:packageFile lazy:loadLazy silent:beSilent)
                             ifFalse:[
                                 alternativeClassFileName notNil ifTrue:[
-                                    packageFile := self getPackageFileName:(packageDir , '/classes/' , alternativeClassFileName , '.cls').
+                                    packageFile := self getPackageFileName:((packageDir / 'classes' / alternativeClassFileName) addSuffix:'cls').
                                     packageFile isNil ifTrue:[
-                                        packageFile := (packageDir , '/classes/' , alternativeClassFileName , '.cls').
+                                        packageFile := ((packageDir / 'classes' / alternativeClassFileName) addSuffix:'cls').
                                     ].
                                     ok := self fileIn:packageFile lazy:loadLazy silent:beSilent
                                 ]
                             ].
 
-                            zarFn := self getPackageFileName:(packageDir , '/classes.zip').
+                            zarFn := self getPackageFileName:(packageDir / 'classes.zip').
                             zarFn notNil ifTrue:[
                                 zar := ZipArchive oldFileNamed:zarFn.
                                 zar notNil ifTrue:[
@@ -5813,11 +5807,11 @@
                                 "
                                  ... and in the standard source-directory
                                 "
-                                filenameToSet := 'source/' , classFileName.
+                                filenameToSet := 'source' asFilename / classFileName.
                                 (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
                                 ifFalse:[
                                     alternativeClassFileName notNil ifTrue:[
-                                        filenameToSet := 'source/' , alternativeClassFileName.
+                                        filenameToSet := 'source' asFilename / alternativeClassFileName.
                                         ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent
                                     ]
                                 ]
@@ -5830,33 +5824,33 @@
                         "
                         ok ifFalse:[
                             packageDir notNil ifTrue:[
-                                packageFile := self getPackageSourceFileName:(packageDir , '/source/' , classFileName).
+                                packageFile := self getPackageSourceFileName:(packageDir / 'source' / classFileName).
                                 packageFile isNil ifTrue:[
-                                    packageFile := (packageDir , '/source/' , classFileName).
+                                    packageFile := (packageDir / 'source' / classFileName).
                                 ].
                                 filenameToSet := packageFile.
                                 (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
                                 ifFalse:[
                                     alternativeClassFileName notNil ifTrue:[
-                                        packageFile := self getPackageSourceFileName:(packageDir , '/source/' , alternativeClassFileName).
+                                        packageFile := self getPackageSourceFileName:(packageDir / 'source' / alternativeClassFileName).
                                         packageFile isNil ifTrue:[
-                                            packageFile := (packageDir , '/source/' , alternativeClassFileName).
+                                            packageFile := (packageDir / 'source' / alternativeClassFileName).
                                         ].
                                         filenameToSet := packageFile.
                                         ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
                                     ].
                                     ok ifFalse:[
-                                        packageFile := self getPackageSourceFileName:(packageDir , '/' , classFileName).
+                                        packageFile := self getPackageSourceFileName:(packageDir / classFileName).
                                         packageFile isNil ifTrue:[
-                                            packageFile := (packageDir , '/' , classFileName).
+                                            packageFile := (packageDir / classFileName).
                                         ].
                                         filenameToSet := packageFile.
                                         (ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent)
                                         ifFalse:[
                                             alternativeClassFileName notNil ifTrue:[
-                                                packageFile := self getPackageFileName:(packageDir , '/' , alternativeClassFileName).
+                                                packageFile := self getPackageFileName:(packageDir / alternativeClassFileName).
                                                 packageFile isNil ifTrue:[
-                                                    packageFile := (packageDir , '/' , alternativeClassFileName).
+                                                    packageFile := packageDir / alternativeClassFileName.
                                                 ].
                                                 filenameToSet := packageFile.
                                                 ok := self fileInSourceFile:packageFile lazy:loadLazy silent:beSilent
@@ -5865,11 +5859,11 @@
                                                 "
                                                  ... and in the standard source-directory
                                                 "
-                                                filenameToSet := 'source/' , packageDir , '/' , classFileName.
+                                                filenameToSet := 'source' asFilename / packageDir / classFileName.
                                                 (ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent)
                                                 ifFalse:[
                                                     alternativeClassFileName notNil ifTrue:[
-                                                        filenameToSet := 'source/' , packageDir , '/' , alternativeClassFileName.
+                                                        filenameToSet := 'source' asFilename / packageDir / alternativeClassFileName.
                                                         ok := self fileInSourceFile:filenameToSet lazy:loadLazy silent:beSilent
                                                     ]
                                                 ]
@@ -5885,9 +5879,9 @@
                         "
                         ok ifFalse:[
                             packageDir notNil ifTrue:[
-                                zarFn := self getPackageFileName:(packageDir , '/source.zip').
+                                zarFn := self getPackageFileName:(packageDir / 'source.zip').
                                 zarFn isNil ifTrue:[
-                                    zarFn := packageDir asFilename withSuffix:'zip'.
+                                    zarFn := packageDir withSuffix:'zip'.
                                     zarFn := self getSourceFileName:zarFn.
                                 ].
                                 (zarFn notNil and:[zarFn asFilename exists]) ifTrue:[
@@ -6065,18 +6059,20 @@
     "Modified: / 08-10-2011 / 00:08:51 / cg"
 !
 
-fileInSourceFile:filename lazy:loadLazy silent:beSilent
-
+fileInSourceFile:filenameArg lazy:loadLazy silent:beSilent
     "Try all available programming languages"
 
-    ProgrammingLanguage allDo:
-	[:lang| | f |
-	f := (filename endsWith: ('.' , lang sourceFileSuffix))
-		    ifTrue:[filename]
-		    ifFalse:[filename , '.' , lang sourceFileSuffix].
-	(self fileIn:f lazy:loadLazy silent:beSilent)
-		ifTrue:[^true]].
-    ^false
+    |filename|
+
+    filename := filenameArg asFilename.
+    ProgrammingLanguage allDo:[:lang| | f |
+        f := (filename hasSuffix:lang sourceFileSuffix)
+                    ifTrue:[filename]
+                    ifFalse:[filename addSuffix:lang sourceFileSuffix].
+        (self fileIn:f lazy:loadLazy silent:beSilent)
+                ifTrue:[^ true]
+    ].
+    ^ false
 
     "Created: / 16-08-2009 / 14:45:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
@@ -6633,20 +6629,20 @@
     "/ search along packagePath ...
     f := self searchPath:self packagePath for:aFileName in:nil.
     f isNil ifTrue:[
-	"/ search under packages-directory along systemPath ...
-	f := self searchPath:self realSystemPath for:aFileName in:PackageDirName.
-	"/ kludge - allow for stx-directory to be named differently
-	f isNil ifTrue:[
-	    (aFileName startsWith:('stx' , Filename separator)) ifTrue:[
-		f := '../..' asFilename / (aFileName copyFrom:5).
-		f exists ifTrue:[
-		    ^ f pathName
-		].
-	    ]
-	].
+        "/ search under packages-directory along systemPath ...
+        f := self searchPath:self realSystemPath for:aFileName in:PackageDirName.
+        "/ kludge - allow for stx-directory to be named differently
+        f isNil ifTrue:[
+            (aFileName asString startsWith:('stx' , Filename separator)) ifTrue:[
+                f := '..' asFilename / '..' / (aFileName copyFrom:5).
+                f exists ifTrue:[
+                    ^ f pathName
+                ].
+            ]
+        ].
     ].
     (f notNil and:[(f := f asFilename) exists]) ifTrue:[
-	^ f pathName
+        ^ f pathName
     ].
     ^ nil
 
@@ -6656,14 +6652,22 @@
     "
 !
 
-getPackageSourceFileName:filenameWithoutSuffix
+getPackageSourceFileName:filenameWithoutSuffixArg
     "search aFileName in some standard places and try all available languages"
 
-    ProgrammingLanguage allDo:
-	[:lang| | file |
-	file := self getPackageFileName: filenameWithoutSuffix , '.' , lang sourceFileSuffix.
-	file ifNotNil:[^file]].
-    ^nil
+    |filenameWithoutSuffix|
+
+    filenameWithoutSuffix:= filenameWithoutSuffixArg asFilename.
+
+    ProgrammingLanguage 
+        allDo:[:lang | 
+            |file|
+
+            file := self 
+                    getPackageFileName:(filenameWithoutSuffix addSuffix:lang sourceFileSuffix).
+            file notNil ifTrue:[ ^ file ]
+        ].
+    ^ nil
 
     "Created: / 16-08-2009 / 14:44:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
@@ -7978,11 +7982,11 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1019 2013-03-31 02:49:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1023 2013-04-16 18:09:17 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1019 2013-03-31 02:49:20 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.1023 2013-04-16 18:09:17 cg Exp $'
 !
 
 version_HG