Skip to main content

wowlab_parsers/parsers/
csv.rs

1/// Parse a comma-separated string into a list of trimmed, non-empty strings.
2#[must_use]
3pub fn parse_csv_list(value: &str) -> Vec<String> {
4    value
5        .split(',')
6        .map(|s| s.trim().to_string())
7        .filter(|s| !s.is_empty())
8        .collect()
9}
10
11#[cfg(test)]
12mod tests {
13    use googletest::prelude::*;
14
15    use super::*;
16
17    #[gtest]
18    fn test_parse_csv_list() -> Result<()> {
19        verify_that!(parse_csv_list("a,b,c"), container_eq(vec!["a", "b", "c"]))?;
20        verify_that!(
21            parse_csv_list("main, master"),
22            container_eq(vec!["main", "master"])
23        )?;
24        verify_that!(
25            parse_csv_list(" a , b , c "),
26            container_eq(vec!["a", "b", "c"])
27        )?;
28        verify_that!(parse_csv_list("single"), container_eq(vec!["single"]))?;
29        verify_that!(parse_csv_list(""), is_empty())?;
30        verify_that!(parse_csv_list("a,,b"), container_eq(vec!["a", "b"]))?;
31
32        Ok(())
33    }
34}