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-guvendiThese 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-3Get into a nix dev environment:
λ nix develop
[nix]λBuild the project:
[nix]λ nix buildRun the tests from the shell:
[nix]λ cabal test --test-show-details=streaming --test-option=--colorRun the tests from GHCi:
[nix]λ cabal repl slugger-test
[ghci]λ :main
# test output prints here
# make some changes, then...
[ghci]λ :reload
[ghci]λ :main