浏览代码

change Path.join to accept an Array<String>

Simon Krajewski 11 年之前
父节点
当前提交
c5f27baab1
共有 2 个文件被更改,包括 20 次插入8 次删除
  1. 16 6
      std/haxe/io/Path.hx
  2. 4 2
      tests/unit/unitstd/haxe/io/Path.unit.hx

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

@@ -173,13 +173,23 @@ class Path {
 	}
 
 	/**
-		Join two paths together and normalize them
-
-		e.g. 'assets/maps' and '../textures/img.png' = 'assets/textures/img.png'
+		Joins all paths in `paths` together.
+		
+		If `paths` is empty, the empty String `""` is returned. Otherwise the
+		paths are joined with a slash between them.
+		
+		If `paths` is null, the result is unspecified.
 	**/
-	public static function join(path1 : String, path2 : String ) : String {
-		path1 = Path.addTrailingSlash(path1);
-		return Path.normalize(path1 + path2);
+	public static function join(paths:Array<String>) : String {
+		if (paths.length == 0) {
+			return "";
+		}
+		var path = paths[0];
+		for (i in 1...paths.length) {
+			path = addTrailingSlash(path);
+			path += paths[i];
+		}
+		return normalize(path);
 	}
 
 	/**

+ 4 - 2
tests/unit/unitstd/haxe/io/Path.unit.hx

@@ -67,8 +67,10 @@ haxe.io.Path.normalize("dir1/dir2/dir3/dir4/../../../dir5") == "dir1/dir5";
 haxe.io.Path.normalize("C:\\Windows\\..\\Users/Waneck on Windows///.haxelib") == "C:/Users/Waneck on Windows/.haxelib";
 
 // join
-haxe.io.Path.join("dir1/dir2", "dir3/dir4") == "dir1/dir2/dir3/dir4";
-haxe.io.Path.join("dir1/dir2/bad_dir/", "../dir3/dir4") == "dir1/dir2/dir3/dir4";
+haxe.io.Path.join(["dir1/dir2", "dir3/dir4"]) == "dir1/dir2/dir3/dir4";
+haxe.io.Path.join(["dir1/dir2/bad_dir/", "../dir3/dir4"]) == "dir1/dir2/dir3/dir4";
+haxe.io.Path.join([]) == "";
+haxe.io.Path.join(["dir1/dir2"]) == "dir1/dir2";
 
 // addTrailingSlash
 haxe.io.Path.addTrailingSlash("") == "/";