Index: dart/lib/uri/helpers.dart |
diff --git a/dart/lib/uri/helpers.dart b/dart/lib/uri/helpers.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b23cdb8598f2645f9a964f2ffa7e1c437dd4be3c |
--- /dev/null |
+++ b/dart/lib/uri/helpers.dart |
@@ -0,0 +1,27 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+String merge(String base, String reference) { |
+ if (base == "") return "/$reference"; |
+ return "${base.substring(0, base.lastIndexOf("/") + 1)}$reference"; |
+} |
+ |
+String removeDotSegments(String path) { |
+ List<String> output = []; |
+ bool appendSlash = false; |
+ for (String segment in path.split("/")) { |
+ appendSlash = false; |
+ if (segment == "..") { |
+ if (!output.isEmpty() && |
+ ((output.length != 1) || (output[0] != ""))) output.removeLast(); |
+ appendSlash = true; |
+ } else if ("." == segment) { |
ngeoffray
2012/05/11 12:41:23
consistency: put segment lhs
ahe
2012/05/11 12:51:32
I did not change this code (but I think I wrote it
|
+ appendSlash = true; |
+ } else { |
+ output.add(segment); |
+ } |
+ } |
+ if (appendSlash) output.add(""); |
+ return Strings.join(output, "/"); |
+} |