CharacterArray.st
changeset 20480 cf0dabebf4dc
parent 20374 b57c60bfaf71
child 20484 5bc49b246ef2
--- a/CharacterArray.st	Wed Sep 28 10:08:50 2016 +0200
+++ b/CharacterArray.st	Thu Sep 29 11:40:45 2016 +0200
@@ -611,7 +611,6 @@
     "
 ! !
 
-
 !CharacterArray class methodsFor:'pattern matching'!
 
 matchEscapeCharacter
@@ -1017,7 +1016,6 @@
     ^ Unicode32String
 ! !
 
-
 !CharacterArray methodsFor:'Compatibility-ANSI'!
 
 addLineDelimiters
@@ -3112,6 +3110,35 @@
     ^ ba
 !
 
+asCanonicalizedFilename
+    "return a Filename with pathname taken from the receiver.
+     The filename is canonicalized, meaning that it cares for trailing directory separators,
+     '.' components etc."
+
+    ^ self asFilename asCanonicalizedFilename
+
+    "on windows:
+     'c:\foo\bar' asFilename
+     'c:\foo\bar\' asFilename
+     'c:\foo\bar\..\baz' asFilename
+     'c:\foo\bar\..\baz\.' asFilename
+     'c:\foo\bar' asCanonicalizedFilename
+     'c:\foo\bar\' asCanonicalizedFilename
+     'c:\foo\bar\..\baz' asCanonicalizedFilename
+     'c:\foo\bar\..\baz\.' asCanonicalizedFilename
+    
+    on unix:
+     '/foo/bar' asFilename
+     '/foo/bar/' asFilename
+     '/foo/bar/../baz' asFilename
+     '/foo/bar/../baz/.' asFilename
+     '/foo/bar' asCanonicalizedFilename
+     '/foo/bar/' asCanonicalizedFilename
+     '/foo/bar/../baz' asCanonicalizedFilename
+     '/foo/bar/../baz/.' asCanonicalizedFilename
+    "
+!
+
 asCollectionOfLines
     "return a collection containing the lines (separated by cr)
      of the receiver. If multiple cr's occur in a row, the result will
@@ -6420,7 +6447,6 @@
     "Modified: 17.4.1997 / 12:50:23 / cg"
 ! !
 
-
 !CharacterArray methodsFor:'special string converting'!
 
 asUnixFilenameString
@@ -7463,7 +7489,6 @@
     "
 ! !
 
-
 !CharacterArray methodsFor:'substring searching'!
 
 findRangeOfString:subString