--- a/Filename.st Tue Nov 07 11:48:26 2006 +0100
+++ b/Filename.st Tue Nov 07 13:58:59 2006 +0100
@@ -5190,6 +5190,48 @@
"Modified: 7.9.1997 / 02:55:25 / cg"
!
+nameWithoutSuffix
+ "return the receivers name without the suffix.
+ If the name has no suffix, the original name is returned."
+
+ |nm idx idxFromEnd|
+
+ nm := self baseName.
+ idx := nm lastIndexOf:(self class suffixSeparator).
+ (idx == 0) ifTrue:[^ nameString].
+ "/ be careful: if the name consists only of suffix (i.e '.foo'),
+ "/ the suffix is considered empty.
+ (idx == 1) ifTrue:[^ nameString].
+
+ idxFromEnd := nm size - idx.
+ idx := nameString size - idxFromEnd.
+
+ ^ nameString copyTo:(idx - 1)
+
+ "
+ 'abc.st' asFilename nameWithoutSuffix
+ 'abc' asFilename nameWithoutSuffix
+ '/abc' asFilename nameWithoutSuffix
+ '/abc.d' asFilename nameWithoutSuffix
+ './abc' asFilename nameWithoutSuffix
+ './abc.d' asFilename nameWithoutSuffix
+ './.abc' asFilename nameWithoutSuffix
+ 'a.b.c' asFilename nameWithoutSuffix
+ 'a.b.' asFilename nameWithoutSuffix
+ '.b.c' asFilename nameWithoutSuffix
+ '.b.' asFilename nameWithoutSuffix
+ '.b' asFilename nameWithoutSuffix
+ '/foo/bar/baz.c' asFilename nameWithoutSuffix
+ '/foo/bar.x/baz.c' asFilename nameWithoutSuffix
+ '/foo/bar.x/baz' asFilename nameWithoutSuffix
+ '/foo/bar/baz/foo.c/bar' asFilename nameWithoutSuffix
+ '/foo/bar/baz/foo.c/bar.c' asFilename nameWithoutSuffix
+ "
+
+ "Modified: / 07-09-1995 / 11:15:42 / claus"
+ "Created: / 07-11-2006 / 13:55:18 / cg"
+!
+
prefix
"return my prefix.
The suffix is the namepart after the final period character,
@@ -5282,7 +5324,7 @@
|prefixName|
- prefixName := self withoutSuffix name.
+ prefixName := self nameWithoutSuffix.
aSuffix isEmptyOrNil ifTrue:[
^ self class named:prefixName
].
@@ -5317,27 +5359,19 @@
'/foo/bar.c/baz' asFilename withSuffix:'st'
"
- "Modified: 7.9.1995 / 11:15:42 / claus"
- "Modified: 11.12.1996 / 16:01:02 / cg"
+ "Modified: / 07-09-1995 / 11:15:42 / claus"
+ "Modified: / 07-11-2006 / 13:58:45 / cg"
!
withoutSuffix
"return a new filename for the receivers name without the suffix.
- If the name has no suffix, the receiver is returned."
-
- |nm idx idxFromEnd|
-
- nm := self baseName.
- idx := nm lastIndexOf:(self class suffixSeparator).
- (idx == 0) ifTrue:[^ self].
- "/ be careful: if the name consists only of suffix (i.e '.foo'),
- "/ the suffix is considered empty.
- (idx == 1) ifTrue:[^self].
-
- idxFromEnd := nm size - idx.
- idx := nameString size - idxFromEnd.
-
- ^ self class named:(nameString copyTo:(idx - 1))
+ If the name has no suffix, a filename representing the same file as the receiver is returned."
+
+ |n|
+
+ n := self nameWithoutSuffix.
+ n = nameString ifTrue:[^ self].
+ ^ self class named:n
"
'abc.st' asFilename withoutSuffix
@@ -5359,8 +5393,8 @@
'/foo/bar/baz/foo.c/bar.c' asFilename withoutSuffix
"
- "Modified: 7.9.1995 / 11:15:42 / claus"
- "Modified: 3.7.1996 / 10:49:58 / cg"
+ "Modified: / 07-09-1995 / 11:15:42 / claus"
+ "Modified: / 07-11-2006 / 13:57:45 / cg"
! !
!Filename methodsFor:'testing'!
@@ -5377,7 +5411,7 @@
!Filename class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.308 2006-11-06 10:45:32 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.309 2006-11-07 12:58:59 cg Exp $'
! !
Filename initialize!