--- 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