nmd_core/compilable_text/
compilable_text_part.rs

1use getset::{Getters, MutGetters, Setters};
2use serde::Serialize;
3use crate::codex::modifier::ModifiersBucket;
4
5
6#[derive(Debug, Clone, Serialize)]
7pub enum CompilableTextPartType {
8    Fixed,
9    Compilable{ incompatible_modifiers: ModifiersBucket },
10}
11
12#[derive(Debug, Getters, Setters, MutGetters, Clone, Serialize)]
13pub struct CompilableTextPart {
14
15    #[getset(get_mut = "pub", get = "pub", set = "pub")]
16    content: String,
17
18    #[getset(get = "pub", set = "pub")]
19    part_type: CompilableTextPartType,
20}
21
22impl CompilableTextPart {
23    
24    pub fn new(content: String, part_type: CompilableTextPartType) -> Self {
25        Self {
26            content,
27            part_type,
28        }
29    }
30
31    pub fn new_fixed(content: String) -> Self {
32        Self::new(content, CompilableTextPartType::Fixed)
33    }
34
35    pub fn new_compilable(content: String, incompatible_modifiers: ModifiersBucket) -> Self {
36        Self::new(content, CompilableTextPartType::Compilable { incompatible_modifiers })
37    }
38}