exemplify-lib 0.1.6

Tool for generating code examples from annotated source file directories
Documentation
use std::fs::File;

use std::path::Path;






use crate::layers::domain::reader_factory::{ReaderFactory, ReaderContext};

pub struct FileReaderFactory {}

impl ReaderFactory<File> for FileReaderFactory {
    fn make_reader(&self, name: String) -> Result<ReaderContext<File>, String> {
        let file_path = Path::new(&name);

        if !file_path.is_file() {
            return Err(format!("{} is not a file", name).into());
        }

        Ok(ReaderContext {
            source_name: name.clone(),
            reader: std::fs::File::open(file_path).map_err(|e| e.to_string())?
        })
    }
}