use std::fmt;
use super::bond_descriptor::BondDescriptor;
use super::stochastic_fragment::StochasticFragment;
#[derive(Debug, Clone, PartialEq)]
pub struct StochasticObject {
pub left_end: Option<BondDescriptor>,
pub repeat_units: Vec<StochasticFragment>,
pub end_groups: Vec<StochasticFragment>,
pub right_end: Option<BondDescriptor>,
}
impl fmt::Display for StochasticObject {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{{")?;
if let Some(le) = &self.left_end {
write!(f, "{}", le)?;
}
for (i, ru) in self.repeat_units.iter().enumerate() {
if i > 0 {
write!(f, ",")?;
}
write!(f, "{}", ru)?;
}
if !self.end_groups.is_empty() {
write!(f, ";")?;
for (i, eg) in self.end_groups.iter().enumerate() {
if i > 0 {
write!(f, ",")?;
}
write!(f, "{}", eg)?;
}
}
if let Some(re) = &self.right_end {
write!(f, "{}", re)?;
}
write!(f, "}}")
}
}