1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use super::*;

/// Documentation list
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct DocumentationList {
    /// Spans of this documentation
    pub terms: Vec<StringTextNode>,
}

impl DocumentationList {
    /// Check if this documentation list is empty
    pub fn is_empty(&self) -> bool {
        self.terms.is_empty()
    }
}

#[cfg(feature = "pretty-print")]
impl PrettyPrint for DocumentationList {
    fn pretty(&self, _: &PrettyProvider) -> PrettyTree {
        let mut terms = PrettySequence::new(0);
        for (index, line) in self.terms.lines().enumerate() {
            if index != 0 {
                terms += PrettyTree::Hardline
            }
            terms += "#? ";
            terms += line.to_owned();
        }
        terms.into()
    }
}