# Generate a URL friendly 'slug' from the given string `str_slug` generates url friendly [slug](https://en.wikipedia.org/wiki/Clean_URL#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](https://docs.rs/str_slug) ### Simple usage **NORMAL** ```rust use str_slug::slug; let slug = slug("hello world"); assert_eq!(slug, "hello-world"); ``` **WITH HASH** ```rust use str_slug::slug_hash; let slug = slug_hash_len("Hello, world ;-)", 6); assert_eq!("hello-world_ea1ac5", slug); ``` ### Options ```rust 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 ```rust 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`.