1 unstable release

Uses old Rust 2015

0.1.0 Jul 26, 2017

#581 in Text processing

Download history 3396/week @ 2024-03-15 3224/week @ 2024-03-22 2987/week @ 2024-03-29 3299/week @ 2024-04-05 3037/week @ 2024-04-12 3921/week @ 2024-04-19 2897/week @ 2024-04-26 2500/week @ 2024-05-03 2882/week @ 2024-05-10 2833/week @ 2024-05-17 3466/week @ 2024-05-24 3104/week @ 2024-05-31 2760/week @ 2024-06-07 3101/week @ 2024-06-14 2357/week @ 2024-06-21 1537/week @ 2024-06-28

10,243 downloads per month
Used in 40 crates (18 directly)

MIT license

14KB
209 lines

Slugify

Build Status Build status Crates.io docs.rs License: MIT

A utility macro for flexible slug genereation that handles unicode.

The slugify! macro implements a flexible slug generator, allowing for stop words, custom separator and maximum length options. The macro provides both a simple call format that has sane default parameters but also allows there default parameters to be overriden when needed.

Features:

  • Unicode strings support (phonetic conversion).
  • Support for custom slug separator.
  • Stop words filtering.
  • Slug maximum length support.

Usage

This crate is on crates.io and can be used by adding slugify to the dependencies in your project's Cargo.toml

[dependencies]
slugify = "0.1.0"

and this to your crate root:

#[macro_use] extern  crate  slugify;
use slugify::slugify;

Examples

Basic slug generation

assert_eq!(slugify!("hello world"), "hello-world");

Using a custom separator

assert_eq!(slugify!("hello world", separator = "."), "hello.world");
assert_eq!(slugify!("hello world", separator = " "), "hello world");

Stop words filtering

assert_eq!(slugify!("the quick brown fox jumps over the lazy dog", stop_words = "the,fox"), "quick-brown-jumps-over-lazy-dog");

Maximum slug length

assert_eq!(slugify!("the hello world", stop_words = "the", max_length = 5), "hello");

Phonetic Conversion and accented text

assert_eq!(slugify!("影師嗎"), "ying-shi-ma");
assert_eq!(slugify!("Æúű--cool?"), "aeuu-cool");
assert_eq!(slugify!("Nín hǎo. Wǒ shì zhōng guó rén"), "nin-hao-wo-shi-zhong-guo-ren");

Passing multiple optional parameters.

NOTE: the order of optional parameters matters: stop_words, separator and then max_length. All of them are optional, however when specifying more than one optional parameter, this order must be adhered.

assert_eq!(slugify!("the hello world", stop_words = "the", separator = "-"), "hello-world");
assert_eq!(slugify!("the hello world", separator = ".", max_length = 10), "the.hello");
assert_eq!(slugify!("the hello world", stop_words = "the", max_length = 5), "hello");
assert_eq!(slugify!("the hello world", stop_words = "the", separator = "-", max_length = 20), "hello-world");

Dependencies

~2MB
~66K SLoC