blob: ec1ed8df6c6dba47385356781868fd53b4efb7f8 [file] [log] [blame]
// Copyright (c) 2018, 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.
/**
* A utility class used to convert between URIs and absolute file paths.
*/
abstract class UriConverter {
/**
* Return the URI that should be used to reference the file at the absolute
* [path], or `null` if there is no valid way to reference the file in this
* converter’s context. The file at that path is not required to exist.
*
* If a [containingPath] is provided and both the [path] and [containingPath]
* are within the root of this converter’s context, then the returned URI will
* be a relative path. Otherwise, the returned URI will be an absolute URI.
*
* Throws an `ArgumentError` if the [path] is `null` or is not a valid
* absolute file path.
*/
Uri pathToUri(String path, {String containingPath});
/**
* Return the absolute path of the file to which the absolute [uri] resolves,
* or `null` if the [uri] cannot be resolved in this converter’s context.
*
* Throws an `ArgumentError` if the [uri] is `null` or is not an absolute URI.
*/
String uriToPath(Uri uri);
}