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
32
33
34
35
use super::{new_node, Config, Element, Encode, EncodeError};

use crate::{
    config::{change_case, format_number},
    svd::EnumeratedValue,
};

impl Encode for EnumeratedValue {
    type Error = EncodeError;

    fn encode_with_config(&self, config: &Config) -> Result<Element, EncodeError> {
        let mut base = Element::new("enumeratedValue");
        base.children.push(new_node(
            "name",
            change_case(&self.name, config.enumerated_value_name),
        ));

        if let Some(d) = &self.description {
            base.children.push(new_node("description", d.clone()));
        };

        if let Some(v) = &self.value {
            base.children.push(new_node(
                "value",
                format_number(*v, config.enumerated_value_value),
            ));
        };

        if let Some(v) = &self.is_default {
            base.children.push(new_node("isDefault", format!("{}", v)));
        };

        Ok(base)
    }
}