Clean URI slugs for Haskell
Convert multi-language text to a US-ASCII, lowercase, hyphenated, URI-friendly "slug".
There are Data.Text
and Data.String
library interfaces to slugger
that
have plenty of examples in the test file
, and here
are some simple examples.
Example of Data.String.Slugger
:
import qualified Data.String.Slugger as SluggerString
SluggerString.toSlug "Hey there, world!"
-- "hey-there-world"
SluggerString.toSlug "GARÇON - déjà , Forêt — Zoë"
-- "garcon-deja-foret-zoe"
Example of Data.Text.Slugger
:
import qualified Data.Text as T
import qualified Data.Text.Slugger as SluggerText
SluggerText.toSlug (T.pack "Hey there, world!")
-- "hey-there-world"
SluggerText.toSlug (T.pack "GARÇON - déjà , Forêt — Zoë")
-- "garcon-deja-foret-zoe"
λ slugger "Hey there, world!"
hey-there-world
λ slugger "Pijamalı hasta yağız şoföre çabucak güvendi"
pijamali-hasta-yagiz-sofore-cabucak-guvendi
These are the languages that are currently tested and therefore marked as supported. Contributions are welcome for more extensive tests or tests for additional languages.
- Dansk (Danish)
- Deutsch (German)
- English
- Español (Spanish)
- Français (French)
- Íslenska (Icelandic)
- Italiano (Italian)
- Polski (Polish)
- Suomi (Finnish)
- Svenska (Swedish)
- Türkçe (Turkish)
Try the project executable via a nix flake app:
λ nix run . "Testing 1,2,3"
testing-1-2-3
Get into a nix dev environment:
λ nix develop
[nix]λ
Build the project:
[nix]λ nix build
Run the tests from the shell:
[nix]λ cabal test --test-show-details=streaming --test-option=--color
Run the tests from GHCi:
[nix]λ cabal repl slugger-test
[ghci]λ :main
# test output prints here
# make some changes, then...
[ghci]λ :reload
[ghci]λ :main