mmv 0.1.0

lib to mass move files with template names
Documentation
#![forbid(unsafe_code)]

use std::path::PathBuf;

use fstrings::{f, format_args_f};

pub struct ParsedOutput {
    directory: PathBuf,
    file_name: Option<String>,
}

impl ParsedOutput {
    pub fn new(path: &PathBuf) -> Self {
        Self {
            directory: match path.parent() {
                None => PathBuf::new(),
                Some(path) => path.to_path_buf(),
            },

            file_name: match path.file_name() {
                None => None,
                Some(os_path) => Some(os_path.to_str().unwrap().to_string()),
            },
        }
    }

    pub fn get_filled_path(&self, fragments: &Vec<String>) -> PathBuf {
        if self.file_name.is_none() {
            return self.directory.clone();
        }

        let mut new_file_name = self.file_name.clone().unwrap();

        for i in 0..fragments.len() {
            let pos = fragments.len() - i;
            let fragment = &fragments[pos - 1];
            new_file_name = new_file_name.replace(&f!("#{pos}"), fragment);
        }

        self.directory.clone().join(PathBuf::from(new_file_name))
    }
}