Replace Spaces In Directory And File Paths With Dashes In Rust

I store the content for my site in plain-text files^g:neo^^ in my Grimoire^g:grim^^. After years of avoiding them, I've started using spaces in the filenames. They're what I see when I search and they're easier to parse with spaces.

The same filenames are used for building the web pages but I *do not** want spaces there. I also don't want the uppercase letters that I also use in the raw filenames.

This is the little function I use to take care of all that for me.

Code
use regex::Regex;

fn scrub_url_path(source: String) -> String {
    let re = Regex::new(r"\s+").unwrap();
    re.replace_all(&source, "-").to_lowercase()
}

A test run looks like this:

Code
fn main() {
    let source = String::from("this Is  123 Some Text");
    let expected = String::from("this-is-123-some-text");
    let result = scrub_url_path(source);
    assert_eq!(expected, result);
}

Features

  • lowercases all letters

  • replaces spaces with dashes

  • replaces multiple spaces with a single dash

    It doesn't deal with anything else (like question marks) but I'm not using those. I'll setup for those in the future by clear listing letters and numbers and removing everything else.

    Basic, but helpful.

You'll need to add the _regex__ create with:

Code
cargo add regex