# Slugify

[![Build Status](](

Transforms strings in any language into slugs.

It works by transliterating any Unicode character to alphanumeric ones, and
replaces whitespaces with hyphens.

The goal is to generate general purpose human and machine-readable slugs. So
`-`, `.`, `_` and `~` characters are stripped from input even though they are
"unreserved" characters for URLs (see [RFC 3986][1]). Having said that, any
character can be used as a separator, including the ones above.

This package has no dependencies.

## Examples

Slug.slugify("Hello, World!")



nil # Remember nil check if a valid slug is important!

## Options

Whitespaces are replaced by separators (defaults to `-`), but you can use any
string as a separator or pass `""` to have none.

Slug.slugify("  How are   you  ?  ")

Slug.slugify("1 2 3", separator: " != ")
"1 != 2 != 3"

Slug.slugify("Madam, I'm Adam", separator: "")

Slugs are forced lowercase by default, unless `lowercase: false` is passed.

Slug.slugify("StUdLy CaPs", lowercase: false)

Specific graphemes can be ignored if you pass a string (or a list of strings)
containing characters to ignore.

Slug.slugify("你好,世界", ignore: "你好")

Slug.slugify("你好,世界", ignore: ["你", "好"])

## Caveats

Slugify cannot differentiate between Chinese characters and Japanese Kanji.
In the same vein as other libraries, Japanese Kanji will transform into Chinese

## Installation

Add `slugify` to your list of dependencies in `mix.exs`:

def deps do
  [{:slugify, "~> 1.0.0"}]

Don’t forget to update your dependencies.

$ mix deps.get

## Links

* [Documentation][2]
* [Hex][3]

## License

Slugify is released under [MIT][4] license.

## Credits

* Inspired by [Unidecode][5], [Transliteration][6] and [Slugger][7].

* Data ported from andyhu's excellent [Transliteration][6] package.