# 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_whitespace` and `trim_separator` will take precedence when set to `true`.
### Usage
```rust
let sentence = "quick brown fox jumps over the lazy dog";
let slug = str_slug::slug(sentence);
// quick-brown-fox-jumps-over-the-lazy-dog
```
with a hash
```rust
let sentence = "quick brown fox jumps over the lazy dog";
let slug = str_slug::slug_hash(sentence);
// quick-brown-fox-jumps-over-the-lazy-dog_ce2907
```