gette 0.0.2

A Rust library for getting "things"
Documentation
use path_clean::PathClean;
use std::{
    env,
    path::{Path, PathBuf},
};

pub struct File;
impl crate::Detector for File {
    fn detect(&self, path: &str) -> Result<Option<String>, crate::Error> {
        if url::Url::parse(path).is_ok() {
            return Ok(None);
        }

        let path = absolute_path(path)?;

        Ok(Some(
            format!("file://{}", path.to_str().unwrap()).to_string(),
        ))
    }
}

fn absolute_path<P: AsRef<Path>>(path: P) -> Result<PathBuf, crate::Error> {
    let path = path.as_ref();
    let abs = if path.is_absolute() {
        path.to_path_buf()
    } else {
        env::current_dir()?.join(path)
    }
    .clean();

    Ok(abs)
}