Skip to content

A utility macro for flexible slug genereation that handles unicode, generates url friendly slugs

License

Notifications You must be signed in to change notification settings

spa5k/slugify-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slugify-rs

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 interface with sane default parameters but also allows the parameters to be overriden when needed.

Features:

  • Unicode strings support (phonetic conversion).
  • Support for custom slug separator.
  • Stop words filtering.
  • Slug maximum length support.
  • Add randomness to the generated slug to avoid unique constraint from acting

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-rs = "0.0.3"

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");
assert_eq!(slugify!("hello world", separator = ""), "helloworld");

// 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 length
assert_eq!(slugify!("hello world", max_length = 5), "hello");
assert_eq!(slugify!("the hello world", stop_words = "the", max_length = 5), "hello");

// Random values added to string through nanoid
// Default randomness string length is 5.
assert_eq!(slugify!("hello world", randomness=true).len(), "hello-world".len()+5);
assert_eq!(slugify!("hello world", randomness=true,randomness_length=8).len(), "hello-world".len()+8);

// 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");

Info

This slug was forked from the original slugify crate by @mattgathu

About

A utility macro for flexible slug genereation that handles unicode, generates url friendly slugs

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages