combinePaths function
Implementation
String combinePaths(List<String?> paths) {
List<String> parts = [];
for (int i = 0; i < paths.length; i++) {
var arg = paths[i]!;
if (arg.indexOf("://") == -1)
parts.addAll(arg.split("/"));
else
parts.add(arg.lastIndexOf("/") == arg.length - 1
? arg.substring(0, arg.length - 1)
: arg);
}
List<String> combinedPaths = [];
for (int i = 0; i < parts.length; i++) {
var part = parts[i];
if (part == "" || part == ".") continue;
if (part == "..")
combinedPaths.removeLast();
else
combinedPaths.add(part);
}
if (parts[0] == "") combinedPaths.insert(0, "");
var ret = combinedPaths.join("/");
return ret.length > 0 ? ret : (combinedPaths.length == 0 ? "/" : ".");
}