muffy 0.4.4

The static website validator
Documentation
use super::{element_output::RenderedElementOutput, utility::truncate_url};
use alloc::borrow::Cow;
use serde::Serialize;

#[derive(Debug, Serialize)]
pub struct RenderedDocumentOutput<'a> {
    url: Cow<'a, str>,
    elements: Vec<RenderedElementOutput<'a>>,
}

impl<'a> RenderedDocumentOutput<'a> {
    pub fn url(&self) -> &str {
        &self.url
    }

    pub fn elements(&self) -> impl ExactSizeIterator<Item = &RenderedElementOutput<'a>> {
        self.elements.iter()
    }

    pub(crate) fn retain_error(&mut self) {
        for element in &mut self.elements {
            element.retain_error();
        }

        self.elements.retain(|element| element.results().len() != 0);
    }
}

impl<'a> From<&'a crate::DocumentOutput> for RenderedDocumentOutput<'a> {
    fn from(output: &'a crate::DocumentOutput) -> Self {
        Self {
            url: truncate_url(output.url().as_str()),
            elements: output.elements().map(RenderedElementOutput::from).collect(),
        }
    }
}