Copyright | © 2015 Mark Karpov |
---|---|
License | BSD 3 clause |
Maintainer | Mark Karpov <markkarpov@openmailbox.org> |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Type-safe slug implementation for Yesod ecosystem.
- data Slug
- mkSlug :: MonadThrow m => Text -> m Slug
- unSlug :: Slug -> Text
- data SlugException = InvalidInput Text
Documentation
Slug. Textual value inside is always guaranteed to have the following qualities:
- it's not empty;
- it consists only of alpha-numeric groups of characters (words)
separated by
'-'
dashes in such a way that entire slug cannot start or end in a dash and also two dashes in a row cannot be found; - every character with defined notion of case is lower-cased.
Slugs are good for semantic URLs and also can be used as identifier of a sort in some cases.
mkSlug :: MonadThrow m => Text -> m Slug Source
Create Slug
from Text
, all necessary transformations are
applied. Argument of this function can be title of an article or
something like that.
Note that result is inside MonadThrow
, that means you can just get it
in Maybe
, in more complex contexts it will throw SlugException
.
This function also have a useful property:
mkSlug = mkSlug >=> mkSlug . unSlug
data SlugException Source