Note: This site is currently "Under construction". I'm migrating to a new version of my site building software. Lots of things are in a state of disrepair as a result (for example, footnote links aren't working). It's all part of the process of building in public. Most things should still be readable though.

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.

Code

cargo add regex