#slug #slugify #string #generate #friendly #url #hash

str_slug

Generate a URL friendly slug from the given string

4 releases

0.1.3 Apr 10, 2020
0.1.2 Apr 10, 2020
0.1.1 Apr 10, 2020
0.1.0 Apr 10, 2020

#5 in #slug

33 downloads per month
Used in 4 crates (3 directly)

MIT license

11KB
173 lines

Generate a URL friendly 'slug' from the given string

str_slug generates url friendly slug from the given string.

Features

  • correct unicode support.
  • ability to append/prepend a hash of the given value to the generated slug.
  • provide a simple to use apis slug, slug_hash, slag_hash_len
  • fully customizable when you need it via StrSlug::new

Examples

For more examples please check the Documentation

Simple usage

NORMAL

use str_slug::slug;

let slug = slug("hello world");
assert_eq!(slug, "hello-world");

WITH HASH

use str_slug::slug_hash;

let slug = slug_hash_len("Hello, world ;-)", 6);
assert_eq!("hello-world_ea1ac5", slug);

Options

pub struct StrSlug {
    pub use_hash: bool,

    /// if its set to false the hash will be prepended
    pub append_hash: bool,

    /// use full hash if `hash_len` = 0
    pub hash_len: usize,

    /// separator to use to separate slug and hash
    pub hash_separator: char,

    pub separator: char,
    pub remove_duplicate_separators: bool,

    /// Trim leading and trailing separators after slugifying the given string.
    pub trim_separator: bool,
    pub trim_separator_start: bool,
    pub trim_separator_end: bool,
}

Defaults

pub fn new() -> Self {
    Self {
        use_hash: false,
        append_hash: true,
        hash_len: 6,
        hash_separator: '_',

        separator: '-',
        remove_duplicate_separators: true,

        trim_separator: true,
        trim_separator_start: false,
        trim_separator_end: false,
    }
}

trim_separator will take precedence when set to true.

Dependencies

~170–560KB
~10K SLoC