+nameWithoutSuffix
authorClaus Gittinger <cg@exept.de>
Tue, 07 Nov 2006 13:58:59 +0100
changeset 10155 3cbef777449f
parent 10154 abf2c5f9ba8c
child 10156 d35f30a7fde5
+nameWithoutSuffix
Filename.st
--- 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!