boseiju/lexer/tokens/intermediates/
choice.rs

1#[derive(idris_derive::Idris)]
2#[derive(serde::Serialize, serde::Deserialize)]
3#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
4pub enum Choice {
5    Color {
6        #[cfg(feature = "spanned_tree")]
7        span: crate::ability_tree::span::TreeSpan,
8    },
9}
10
11#[cfg(feature = "spanned_tree")]
12impl Choice {
13    pub fn span(&self) -> crate::ability_tree::span::TreeSpan {
14        match self {
15            Self::Color { span } => *span,
16        }
17    }
18}
19
20impl Choice {
21    pub fn try_from_span(span: &crate::lexer::Span) -> Option<Self> {
22        match span.text {
23            "choose a color" => Some(Self::Color {
24                #[cfg(feature = "spanned_tree")]
25                span: span.into(),
26            }),
27            _ => None,
28        }
29    }
30}