CI badge made with Haskell Hackage

Buy Me a Coffee at ko-fi.com

> *A Typeclass for user-facing output* ## Description The `text-display` library offers a way for developers to print a textual representation of datatypes that does not have to abide by the rules of the [Show typeclass][Show]. If you wish to learn more about how things are done and why, please read the [DESIGN.md](https://github.com/haskell-text/text-display/blob/main/DESIGN.md) file. ## Examples There are two methods to implement `Display` for your type: The first one is a manual implementation: ```haskell data ManualType = MT Int -- >>> display (MT 32) -- "MT 32" instance Display ManualType where displayPrec prec (MT i) = displayParen (prec > 10) $ "MT " <> displayPrec 11 i ``` But this can be quite time-consuming, especially if your datatype already has an existing `Show` that you wish to reuse. In which case, you can piggy-back on this instance like this: ```haskell {-# LANGUAGE DerivingVia #-} data AutomaticallyDerived = AD -- We derive 'Show' deriving Show -- We take advantage of the 'Show' instance to derive 'Display' from it deriving Display via (ShowInstance AutomaticallyDerived) ``` But let's say you want to redact an instance of `Display`? You can do it locally, through the `OpaqueInstance` helper. It is most useful to hide tokens or passwords: ```haskell data UserToken = UserToken UUID deriving Display via (OpaqueInstance "[REDACTED]" UserToken) display $ UserToken "7a01d2ce-31ff-11ec-8c10-5405db82c3cd" -- => "[REDACTED]" ``` [Show]: https://hackage.haskell.org/package/base/docs/Text-Show.html#v:Show