dctap/
placeholder_resolver.rs

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
use serde_derive::{Deserialize, Serialize};

/// Different types of Placeholder resolvers
#[derive(Deserialize, Serialize, Debug, PartialEq, Clone)]
pub enum PlaceholderResolver {
    /// Stem resolver simply adds the generated id to the stem
    Stem { stem: String },
}

impl PlaceholderResolver {
    pub fn stem(stem: &str) -> PlaceholderResolver {
        PlaceholderResolver::Stem {
            stem: stem.to_string(),
        }
    }

    pub fn generate(&self, id: u64) -> String {
        match self {
            PlaceholderResolver::Stem { stem } => format!("{stem}{id}"),
        }
    }
}

impl Default for PlaceholderResolver {
    fn default() -> Self {
        PlaceholderResolver::Stem {
            stem: "".to_string(),
        }
    }
}