diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..93a1cbf --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,2 @@ +pub mod slugify; +pub use crate::slugify::slugify; diff --git a/src/main.rs b/src/main.rs index 440667a..9376c65 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,29 +1,11 @@ use clap::Parser; +use slugify::slugify; #[derive(Parser)] struct Cli { strings: Vec, } -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 -} - fn main() { let args = Cli::parse(); let combined = args.strings.join(" "); diff --git a/src/slugify.rs b/src/slugify.rs new file mode 100644 index 0000000..f5eb489 --- /dev/null +++ b/src/slugify.rs @@ -0,0 +1,18 @@ +pub 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 +}