slugify/src/main.rs

33 lines
671 B
Rust
Raw Normal View History

2025-04-02 23:19:31 +02:00
use clap::Parser;
#[derive(Parser)]
struct Cli {
strings: Vec<String>,
}
fn slugify(input: String) -> String {
let mut result = input.to_lowercase();
result = result.replace(' ', "-");
result = result
.chars()
.filter(|&c| c.is_alphanumeric() || c == '_' || c == '-')
.collect();
while result.contains("--") {
result = result.replace("--", "-");
}
result = result
.trim_matches(|c| c == ' ' || c == '-' || c == '_')
.to_string();
result
}
2025-04-02 22:45:24 +02:00
fn main() {
2025-04-02 23:19:31 +02:00
let args = Cli::parse();
let combined = args.strings.join(" ");
let slug = slugify(combined);
println!("{}", slug);
2025-04-02 22:45:24 +02:00
}