Rest/Fn/Transform/
private_field.rs1#[derive(Debug, Clone, Default)]
8pub struct Config {
9 pub prefix:String,
11 pub preserve_comments:bool,
13}
14
15impl Config {
16 pub fn new() -> Self { Self { prefix:"__".to_string(), preserve_comments:true } }
17}
18
19pub struct PrivateFieldTransform {
28 config:Config,
29}
30
31impl PrivateFieldTransform {
32 pub fn new() -> Self { Self { config:Config::new() } }
33
34 pub fn with_config(config:Config) -> Self { Self { config } }
35
36 pub fn convert_private_name(&self, name:&str) -> String { format!("{}{}", self.config.prefix, name) }
38
39 pub fn is_private_field(&self, name:&str) -> bool { name.starts_with('#') }
41}
42
43impl Default for PrivateFieldTransform {
44 fn default() -> Self { Self::new() }
45}
46
47pub fn convert_private_fields(source:&str, prefix:&str) -> String {
52 let mut result = source.to_string();
53
54 let patterns = [("#", prefix)];
57
58 for (old, new) in patterns {
59 if result.contains(old) && !result.contains(new) {
60 result = result.replace(&format!("{}.", old), &format!("{}.", new));
62 }
63 }
64
65 result
66}
67
68#[cfg(test)]
69mod tests {
70 use super::*;
71
72 #[test]
73 fn test_private_field_transform_creation() {
74 let transform = PrivateFieldTransform::new();
75 let config = transform.config;
76 assert_eq!(config.prefix, "__");
77 }
78
79 #[test]
80 fn test_private_field_transform_with_config() {
81 let config = Config { prefix:"_private_".to_string(), preserve_comments:false };
82 let transform = PrivateFieldTransform::with_config(config.clone());
83 assert_eq!(transform.config.prefix, "_private_");
84 }
85
86 #[test]
87 fn test_convert_private_name() {
88 let transform = PrivateFieldTransform::new();
89 assert_eq!(transform.convert_private_name("field"), "__field");
90 }
91
92 #[test]
93 fn test_is_private_field() {
94 let transform = PrivateFieldTransform::new();
95 assert!(transform.is_private_field("#field"));
96 assert!(!transform.is_private_field("field"));
97 }
98}