use can_dbc_pest::{Pair, Rule};
use crate::parser::{validated, DbcError};
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Transmitter {
NodeName(String),
VectorXXX,
}
impl TryFrom<Pair<'_, Rule>> for Transmitter {
type Error = DbcError;
fn try_from(value: Pair<'_, Rule>) -> Result<Self, Self::Error> {
let value = validated(value, Rule::transmitter)?.as_str();
Ok(if value == "Vector__XXX" {
Self::VectorXXX
} else {
Self::NodeName(value.to_string())
})
}
}