megumax_template/
resource.rs1use crate::solver::Solver;
2use crate::template::Template;
3use std::path::PathBuf;
4
5#[derive(Debug)]
6pub struct Resource {
7 pub path: PathBuf,
8 pub template: Template,
9}
10
11impl Resource {
12 pub fn new(path: PathBuf, template: Template) -> Self {
13 Self { path, template }
14 }
15
16 pub fn replace(&self, content: &str) -> String {
17 self.template.replace(content)
18 }
19}
20
21pub struct Resources<'a> {
22 path: String,
23 inner: Solver<'a>,
24}
25
26impl<'a> Resources<'a> {
27 pub fn new(path: String, inner: Solver<'a>) -> Self {
28 Self { path, inner }
29 }
30}
31
32impl<'a> Iterator for Resources<'a> {
33 type Item = Resource;
34
35 fn next(&mut self) -> Option<Self::Item> {
36 let template = self.inner.next()?;
37 let path = template.replace(&self.path);
38 let result = Resource::new(path.into(), template);
39 Some(result)
40 }
41}