1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mod fs;
mod list;
mod mem;

use std::io;
use std::path::{Path, PathBuf};

/// Something that may provide file content by its name
pub trait Hook {
    /// Performs file loading
    ///
    /// Arguments:
    /// + `path`: absolute or relative file path,
    /// + `dir`: directory of parent file if it contains relative include directive
    ///
    /// Returns on success:
    /// + Absolute path to file
    /// + File content
    fn read(&self, path: &Path, dir: Option<&Path>) -> io::Result<(PathBuf, String)>;
}

pub use fs::{FsHook, FsHookBuilder};
pub use list::{ListHook, ListHookBuilder};
pub use mem::{MemHook, MemHookBuilder};