Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Unified Diff: utils/lib/file_system.dart

Issue 9695048: Template parser (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Siggi's comments Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « utils/css/world.dart ('k') | utils/lib/file_system_memory.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: utils/lib/file_system.dart
diff --git a/utils/lib/file_system.dart b/utils/lib/file_system.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a10c685ad827b0cc43f76b0e308e5cfac3f24b64
--- /dev/null
+++ b/utils/lib/file_system.dart
@@ -0,0 +1,75 @@
+// 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.
+
+// TODO(terry): Investigate common library for file I/O shared between frog and tools.
+
+/** Abstraction for file systems and utility functions to manipulate paths. */
+#library('file_system');
+
+/**
+ * Abstraction around file system access to work in a variety of different
+ * environments.
+ */
+interface FileSystem {
+ String readAll(String filename);
+
+ void writeString(String outfile, String text);
+
+ bool fileExists(String filename);
+
+ void createDirectory(String path, [bool recursive]);
+ void removeDirectory(String path, [bool recursive]);
+}
+
+/**
+ * Replaces all back slashes (\) with forward slashes (/) in [path] and
+ * return the result.
+ */
+String canonicalizePath(String path) {
+ return path.replaceAll('\\', '/');
+}
+
+/** Join [path1] to [path2]. */
+String joinPaths(String path1, String path2) {
+ path1 = canonicalizePath(path1);
+ path2 = canonicalizePath(path2);
+
+ var pieces = path1.split('/');
+ for (var piece in path2.split('/')) {
+ if (piece == '..' && pieces.length > 0 && pieces.last() != '.'
+ && pieces.last() != '..') {
+ pieces.removeLast();
+ } else if (piece != '') {
+ if (pieces.length > 0 && pieces.last() == '.') {
+ pieces.removeLast();
+ }
+ pieces.add(piece);
+ }
+ }
+ return Strings.join(pieces, '/');
+}
+
+/** Returns the directory name for the [path]. */
+String dirname(String path) {
+ path = canonicalizePath(path);
+
+ int lastSlash = path.lastIndexOf('/', path.length);
+ if (lastSlash == -1) {
+ return '.';
+ } else {
+ return path.substring(0, lastSlash);
+ }
+}
+
+/** Returns the file name without directory for the [path]. */
+String basename(String path) {
+ path = canonicalizePath(path);
+
+ int lastSlash = path.lastIndexOf('/', path.length);
+ if (lastSlash == -1) {
+ return path;
+ } else {
+ return path.substring(lastSlash + 1);
+ }
+}
« no previous file with comments | « utils/css/world.dart ('k') | utils/lib/file_system_memory.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698