| // 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. |
| |
| library filenames; |
| |
| import 'relativize.dart' show isWindows; |
| |
| // For information about how to convert Windows file names to URIs: |
| // http://blogs.msdn.com/b/ie/archive/2006/12/06/file-uris-in-windows.aspx |
| |
| String nativeToUriPath(String filename) { |
| // TODO(ahe): It would be nice to use a Dart library instead. |
| if (!isWindows) return filename; |
| filename = filename.replaceAll('\\', '/'); |
| if (filename.length > 2 && filename[1] == ':') { |
| filename = "/$filename"; |
| } |
| return filename; |
| } |
| |
| String uriPathToNative(String path) { |
| // TODO(ahe): It would be nice to use a Dart library instead. |
| if (!isWindows) return path; |
| if (path.length > 3 && path[0] == '/' && path[2] == ':') { |
| return path.substring(1).replaceAll('/', '\\'); |
| } else { |
| return path.replaceAll('/', '\\'); |
| } |
| } |
| |
| Uri nativeToUri(String filename) => Uri.base.resolve(nativeToUriPath(filename)); |
| |
| String appendSlash(String path) => path.endsWith('/') ? path : '$path/'; |