| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library package_config.packages_file; | 5 library package_config.packages_file; |
| 6 | 6 |
| 7 import "package:charcode/ascii.dart"; | 7 import "package:charcode/ascii.dart"; |
| 8 import "src/util.dart" show isValidPackageName; | 8 import "src/util.dart" show isValidPackageName; |
| 9 | 9 |
| 10 /// Parses a `.packages` file into a map from package name to base URI. | 10 /// Parses a `.packages` file into a map from package name to base URI. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 /// with `# ` in front of each line. | 77 /// with `# ` in front of each line. |
| 78 /// Lines are defined as ending in line feed (`'\n'`). If the final | 78 /// Lines are defined as ending in line feed (`'\n'`). If the final |
| 79 /// line of the comment doesn't end in a line feed, one will be added. | 79 /// line of the comment doesn't end in a line feed, one will be added. |
| 80 /// | 80 /// |
| 81 /// If [baseUri] is provided, package locations will be made relative | 81 /// If [baseUri] is provided, package locations will be made relative |
| 82 /// to the base URI, if possible, before writing. | 82 /// to the base URI, if possible, before writing. |
| 83 /// | 83 /// |
| 84 /// All the keys of [packageMapping] must be valid package names, | 84 /// All the keys of [packageMapping] must be valid package names, |
| 85 /// and the values must be URIs that do not have the `package:` scheme. | 85 /// and the values must be URIs that do not have the `package:` scheme. |
| 86 void write(StringSink output, Map<String, Uri> packageMapping, | 86 void write(StringSink output, Map<String, Uri> packageMapping, |
| 87 {Uri baseUri, String comment}) { | 87 {Uri baseUri, String comment}) { |
| 88 if (baseUri != null && !baseUri.isAbsolute) { | 88 if (baseUri != null && !baseUri.isAbsolute) { |
| 89 throw new ArgumentError.value(baseUri, "baseUri", "Must be absolute"); | 89 throw new ArgumentError.value(baseUri, "baseUri", "Must be absolute"); |
| 90 } | 90 } |
| 91 | 91 |
| 92 if (comment != null) { | 92 if (comment != null) { |
| 93 var lines = comment.split('\n'); | 93 var lines = comment.split('\n'); |
| 94 if (lines.last.isEmpty) lines.removeLast(); | 94 if (lines.last.isEmpty) lines.removeLast(); |
| 95 for (var commentLine in lines) { | 95 for (var commentLine in lines) { |
| 96 output.write('# '); | 96 output.write('# '); |
| 97 output.writeln(commentLine); | 97 output.writeln(commentLine); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 } else if (index > 0) { | 181 } else if (index > 0) { |
| 182 return new Uri( | 182 return new Uri( |
| 183 path: '../' * (base.length - index) + target.skip(index).join('/')); | 183 path: '../' * (base.length - index) + target.skip(index).join('/')); |
| 184 } else { | 184 } else { |
| 185 return uri; | 185 return uri; |
| 186 } | 186 } |
| 187 } | 187 } |
| 188 | 188 |
| 189 // TODO: inline to uri.normalizePath() when we move to 1.11 | 189 // TODO: inline to uri.normalizePath() when we move to 1.11 |
| 190 Uri _normalizePath(Uri uri) => new Uri().resolveUri(uri); | 190 Uri _normalizePath(Uri uri) => new Uri().resolveUri(uri); |
| OLD | NEW |