Skip to main content

rvs/
context.rs

1use rvs;
2
3use std::io;
4use std::path::Path;
5use std::path::PathBuf;
6
7pub struct Context {
8    parser: rvs::Parser,
9    seed: rvs::Seed,
10    search_path: rvs::SearchPath,
11}
12
13impl Context {
14    pub fn new(search_path: rvs::SearchPath, seed: rvs::Seed) -> Context {
15        Context {
16            parser: rvs::Parser::new(&search_path),
17            seed,
18            search_path,
19        }
20    }
21
22    pub fn parse(&mut self, s: &str) -> rvs::Result<()> {
23        self.parser.parse(s)
24    }
25
26    pub fn transform(&self, model: &mut rvs::Model) -> rvs::Result<()> {
27        let mut transform = rvs::Transform::new(self.seed.clone());
28
29        transform.transform(model, self.parser.ast())?;
30
31        Ok(())
32    }
33
34    pub fn find_file(&self, path: &Path) -> io::Result<PathBuf> {
35        self.search_path.find(path)
36    }
37}