megumax_template/
resource.rs

1use 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}