2
0
Эх сурвалжийг харах

treat "." and ".." as special cases in haxe.io.Path (closes #2956)

Simon Krajewski 11 жил өмнө
parent
commit
5d234bc0bc

+ 6 - 0
std/haxe/io/Path.hx

@@ -74,6 +74,12 @@ class Path {
 		properties.
 	**/
 	public function new( path : String ) {
+		switch (path) {
+			case "." | "..":
+				dir = path;
+				file = "";
+				return;
+		}
 		var c1 = path.lastIndexOf("/");
 		var c2 = path.lastIndexOf("\\");
 		if( c1 < c2 ) {

+ 12 - 0
tests/unit/unitstd/haxe/io/Path.unit.hx

@@ -2,11 +2,15 @@ var path = "/dir1/dir2/file.ext";
 var path2 = "/dir1/dir.with.dots\\file";
 var path3 = ".htaccess";
 var path4 = "/dir/";
+var path5 = "..";
+var path6 = ".";
 
 var p1 = new haxe.io.Path(path);
 var p2 = new haxe.io.Path(path2);
 var p3 = new haxe.io.Path(path3);
 var p4 = new haxe.io.Path(path4);
+var p5 = new haxe.io.Path(path5);
+var p6 = new haxe.io.Path(path6);
 
 p1.ext == "ext";
 p1.dir == "/dir1/dir2";
@@ -24,6 +28,14 @@ p4.ext == null;
 p4.dir == "/dir";
 p4.file == "";
 
+p5.ext == null;
+p5.dir == "..";
+p5.file == "";
+
+p6.ext == null;
+p6.dir == ".";
+p6.file == "";
+
 // toString
 p1.toString() == path;
 p2.toString() == path2;