use anyhow::anyhow;
use std::path::{Component, PathBuf};
use tower_lsp::lsp_types::Url;
pub fn fileify_path(url: &Url) -> anyhow::Result<PathBuf> {
let mut rewritten = String::new();
for seg in url
.to_file_path()
.map_err(|_| anyhow!("Unable to convert URL to file path."))?
.components()
{
if !matches!(seg, Component::RootDir) {
rewritten.push_str(&seg.as_os_str().to_string_lossy());
rewritten.push('%');
}
}
Ok(rewritten.into())
}