fileslug
Slug generator for Rust. Slugifies filenames and arbitrary text into clean, URL and shell-friendly strings.
Two entry points:
slugify()— filename-aware: preserves extensions, dotfiles, compound extensions (.tar.gz), and version numbersslugify_string()— plain text: treats input as a raw string with no filename handling — use for URL slugs, identifiers, titles, etc.
Usage
Filenames
use ;
let opts = default; // kebab-case, transliterate unicode
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// Snake case
let snake = SlugifyOptions ;
assert_eq!;
// camelCase
let camel = SlugifyOptions ;
assert_eq!;
// Keep unicode (skip transliteration)
let unicode = SlugifyOptions ;
assert_eq!;
Arbitrary text
use ;
let opts = default;
assert_eq!;
assert_eq!;
Features
- Two modes — filename-aware (
slugify) and plain text (slugify_string) - Extension preservation —
.txt,.tar.gz,.tar.bz2etc. never modified - Dotfile awareness —
.gitignore,.envreturned as-is - Version number preservation —
1.2.3dots kept intact - Unicode transliteration — via
any_ascii(or keep-unicode to skip) - Three styles — kebab-case (default), snake_case, camelCase
- Zero-copy for dotfiles — returns
Cow::Borrowedwhen no changes needed