use std::collections::HashMap;
use crate::{
SourceMethod,
Dependencies
};
use serde::{Serialize,Deserialize};
#[derive(Deserialize, Serialize, Debug, PartialEq)]
pub struct SourceSet<'a> {
pub name: &'a str,
pub source_method: SourceMethod,
pub depends_on: HashMap<&'a str, &'a str>,
pub dependencies: Dependencies<'a>,
}
impl<'a> SourceSet<'a> {
pub fn new(
name: &'a str,
source_method: SourceMethod,
depends_on: HashMap<&'a str, &'a str>,
dependencies: Dependencies<'a>,
) -> Self {
SourceSet {
name,
source_method,
depends_on,
dependencies,
}
}
}
impl std::fmt::Display for SourceSet<'_> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f,"val {} by {}",self.name,self.source_method.to_string())?;
if !self.depends_on.is_empty() || !self.dependencies.as_list().is_empty() {
write!(f," {{\n")?;
for (receiver,parameter) in &self.depends_on {
if *receiver != "this" {
write!(f,"{}.",receiver)?;
};
write!(f,"dependsOn({})",parameter)?;
};
write!(f,"{}",self.dependencies.to_string())?;
write!(f," }}\n")?;
}
Ok(())
}
}