summaryrefslogtreecommitdiff
path: root/utils/string_proc/src/format_processer.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-02-25 15:24:18 +0800
committer魏曹先生 <1992414357@qq.com>2026-02-25 15:24:18 +0800
commitfcbd18c4b7d90388a9a2b9e28555d2526727958c (patch)
tree0de680895d6a162a99356d6e4d733942a339275e /utils/string_proc/src/format_processer.rs
parent8b96e8171c4e9d6516fd63d37cbe613bd5927a04 (diff)
Replace string_proc with just_fmt as external dependency
Diffstat (limited to 'utils/string_proc/src/format_processer.rs')
-rw-r--r--utils/string_proc/src/format_processer.rs242
1 files changed, 0 insertions, 242 deletions
diff --git a/utils/string_proc/src/format_processer.rs b/utils/string_proc/src/format_processer.rs
deleted file mode 100644
index bac84c0..0000000
--- a/utils/string_proc/src/format_processer.rs
+++ /dev/null
@@ -1,242 +0,0 @@
-pub struct FormatProcesser {
- content: Vec<String>,
-}
-
-impl From<String> for FormatProcesser {
- fn from(value: String) -> Self {
- Self {
- content: Self::process_string(value),
- }
- }
-}
-
-impl From<&str> for FormatProcesser {
- fn from(value: &str) -> Self {
- Self {
- content: Self::process_string(value.to_string()),
- }
- }
-}
-
-impl FormatProcesser {
- /// Process the string into an intermediate format
- fn process_string(input: String) -> Vec<String> {
- let mut result = String::new();
- let mut prev_space = false;
-
- for c in input.chars() {
- match c {
- 'a'..='z' | 'A'..='Z' | '0'..='9' => {
- result.push(c);
- prev_space = false;
- }
- '_' | ',' | '.' | '-' | ' ' => {
- if !prev_space {
- result.push(' ');
- prev_space = true;
- }
- }
- _ => {}
- }
- }
-
- let mut processed = String::new();
- let mut chars = result.chars().peekable();
-
- while let Some(c) = chars.next() {
- processed.push(c);
- if let Some(&next) = chars.peek()
- && c.is_lowercase()
- && next.is_uppercase()
- {
- processed.push(' ');
- }
- }
-
- processed
- .to_lowercase()
- .split_whitespace()
- .map(|s| s.to_string())
- .collect()
- }
-
- /// Convert to camelCase format (brewCoffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew_coffee");
- /// assert_eq!(processor.to_camel_case(), "brewCoffee");
- /// ```
- pub fn to_camel_case(&self) -> String {
- let mut result = String::new();
- for (i, word) in self.content.iter().enumerate() {
- if i == 0 {
- result.push_str(&word.to_lowercase());
- } else {
- let mut chars = word.chars();
- if let Some(first) = chars.next() {
- result.push_str(&first.to_uppercase().collect::<String>());
- result.push_str(&chars.collect::<String>().to_lowercase());
- }
- }
- }
- result
- }
-
- /// Convert to PascalCase format (BrewCoffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew_coffee");
- /// assert_eq!(processor.to_pascal_case(), "BrewCoffee");
- /// ```
- pub fn to_pascal_case(&self) -> String {
- let mut result = String::new();
- for word in &self.content {
- let mut chars = word.chars();
- if let Some(first) = chars.next() {
- result.push_str(&first.to_uppercase().collect::<String>());
- result.push_str(&chars.collect::<String>().to_lowercase());
- }
- }
- result
- }
-
- /// Convert to kebab-case format (brew-coffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew_coffee");
- /// assert_eq!(processor.to_kebab_case(), "brew-coffee");
- /// ```
- pub fn to_kebab_case(&self) -> String {
- self.content.join("-").to_lowercase()
- }
-
- /// Convert to snake_case format (brew_coffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brewCoffee");
- /// assert_eq!(processor.to_snake_case(), "brew_coffee");
- /// ```
- pub fn to_snake_case(&self) -> String {
- self.content.join("_").to_lowercase()
- }
-
- /// Convert to dot.case format (brew.coffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew_coffee");
- /// assert_eq!(processor.to_dot_case(), "brew.coffee");
- /// ```
- pub fn to_dot_case(&self) -> String {
- self.content.join(".").to_lowercase()
- }
-
- /// Convert to Title Case format (Brew Coffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew_coffee");
- /// assert_eq!(processor.to_title_case(), "Brew Coffee");
- /// ```
- pub fn to_title_case(&self) -> String {
- let mut result = String::new();
- for word in &self.content {
- let mut chars = word.chars();
- if let Some(first) = chars.next() {
- result.push_str(&first.to_uppercase().collect::<String>());
- result.push_str(&chars.collect::<String>().to_lowercase());
- }
- result.push(' ');
- }
- result.pop();
- result
- }
-
- /// Convert to lower case format (brew coffee)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("BREW COFFEE");
- /// assert_eq!(processor.to_lower_case(), "brew coffee");
- /// ```
- pub fn to_lower_case(&self) -> String {
- self.content.join(" ").to_lowercase()
- }
-
- /// Convert to UPPER CASE format (BREW COFFEE)
- ///
- /// # Examples
- ///
- /// ```
- /// # use string_proc::format_processer::FormatProcesser;
- /// let processor = FormatProcesser::from("brew coffee");
- /// assert_eq!(processor.to_upper_case(), "BREW COFFEE");
- /// ```
- pub fn to_upper_case(&self) -> String {
- self.content.join(" ").to_uppercase()
- }
-}
-
-#[cfg(test)]
-mod tests {
- use crate::format_processer::FormatProcesser;
-
- #[test]
- fn test_processer() {
- let test_cases = vec![
- ("brew_coffee", "brewCoffee"),
- ("brew, coffee", "brewCoffee"),
- ("brew-coffee", "brewCoffee"),
- ("Brew.Coffee", "brewCoffee"),
- ("bRewCofFee", "bRewCofFee"),
- ("brewCoffee", "brewCoffee"),
- ("b&rewCoffee", "brewCoffee"),
- ("BrewCoffee", "brewCoffee"),
- ("brew.coffee", "brewCoffee"),
- ("Brew_Coffee", "brewCoffee"),
- ("BREW COFFEE", "brewCoffee"),
- ];
-
- for (input, expected) in test_cases {
- let processor = FormatProcesser::from(input);
- assert_eq!(
- processor.to_camel_case(),
- expected,
- "Failed for input: '{}'",
- input
- );
- }
- }
-
- #[test]
- fn test_conversions() {
- let processor = FormatProcesser::from("brewCoffee");
-
- assert_eq!(processor.to_upper_case(), "BREW COFFEE");
- assert_eq!(processor.to_lower_case(), "brew coffee");
- assert_eq!(processor.to_title_case(), "Brew Coffee");
- assert_eq!(processor.to_dot_case(), "brew.coffee");
- assert_eq!(processor.to_snake_case(), "brew_coffee");
- assert_eq!(processor.to_kebab_case(), "brew-coffee");
- assert_eq!(processor.to_pascal_case(), "BrewCoffee");
- assert_eq!(processor.to_camel_case(), "brewCoffee");
- }
-}