Convert `snake_case` to `camelCase`.
(s: &str)
| 510 | |
| 511 | /// Convert `snake_case` to `camelCase`. |
| 512 | fn snake_to_camel(s: &str) -> String { |
| 513 | let parts: Vec<&str> = s.split('_').filter(|p| !p.is_empty()).collect(); |
| 514 | if parts.is_empty() { |
| 515 | return "variable".to_string(); |
| 516 | } |
| 517 | |
| 518 | let mut result = parts[0].to_lowercase(); |
| 519 | for part in &parts[1..] { |
| 520 | let mut chars = part.chars(); |
| 521 | if let Some(first) = chars.next() { |
| 522 | result.extend(first.to_uppercase()); |
| 523 | result.push_str(&chars.as_str().to_lowercase()); |
| 524 | } |
| 525 | } |
| 526 | result |
| 527 | } |
| 528 | |
| 529 | /// Deduplicate a variable name against existing variables in scope. |
| 530 | /// |