swift_mt_message/
utils.rs1use crate::parser::extract_base_tag;
4
5pub fn get_field_tag_with_variant<T>(base_tag: &str, field_value: &T) -> String
7where
8 T: std::fmt::Debug,
9{
10 let debug_string = format!("{field_value:?}");
11
12 if let Some(variant_end) = debug_string.find('(') {
14 let variant = &debug_string[..variant_end];
15
16 if variant == "NoOption" {
18 base_tag.to_string()
19 } else {
20 format!("{base_tag}{variant}")
21 }
22 } else {
23 base_tag.to_string()
24 }
25}
26
27pub fn get_field_tag_for_mt(tag: &str) -> String {
29 extract_base_tag(tag).to_string()
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_get_field_tag_for_mt() {
38 assert_eq!(get_field_tag_for_mt("50"), "50");
40 assert_eq!(get_field_tag_for_mt("50#1"), "50");
41 assert_eq!(get_field_tag_for_mt("50#2"), "50");
42 assert_eq!(get_field_tag_for_mt("32A#1"), "32A");
43 assert_eq!(get_field_tag_for_mt("34F#10"), "34F");
44
45 assert_eq!(get_field_tag_for_mt("20"), "20");
47 assert_eq!(get_field_tag_for_mt("32A"), "32A");
48 assert_eq!(get_field_tag_for_mt("59F"), "59F");
49 }
50}