# HG changeset patch # User Claus Gittinger # Date 1162904339 -3600 # Node ID 3cbef777449f031a6c09883d2bc304b3163fcff0 # Parent abf2c5f9ba8cff678a2e4677076b056b6da2090d +nameWithoutSuffix diff -r abf2c5f9ba8c -r 3cbef777449f 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!