///|
/// Parsed remote directory URI. The root uses an empty path and display name
/// `workspace`.
pub(all) enum RemoteDirectoryResult {
/// Root-relative directory path ("" for the workspace root itself) plus
/// the directory's display name.
ParsedRemoteDirectory(String, String)
RemoteDirectoryError(@remote_protocol.ProtocolError)
} derive(Debug)
///|
/// Resolves a directory URI to its root-relative path. Accepts the bare
/// `readonly-remote://workspace` root, which `resolve_remote_document_uri`
/// rejects because documents always carry a path.
pub fn resolve_remote_directory_uri(
uri : @base_common.Uri,
request_id? : String = "",
) -> RemoteDirectoryResult {
if uri.to_string() == "readonly-remote://workspace" {
return ParsedRemoteDirectory("", "workspace")
}
match resolve_remote_document_uri(uri, request_id~) {
ParsedRemotePath(path) =>
ParsedRemoteDirectory(path.to_string(), directory_name(path.to_string()))
RemotePathError(error) => RemoteDirectoryError(error)
}
}