enum-utf8-0.1.0.0: README.md
# enum-utf8
An experimental toolkit for rendering enumerated types into `Utf8` from
the [`render-utf8`](http://hackage.haskell.org/package/render-utf8) package)
and parsing them back again with the provided `Utf8Parsable` type class.
It is based on the `render-utf8` and
[`enum-text`](http://hackage.haskell.org/package/enum-text) packages.
To get the `Buildable` and `TextParsable` instances for an enumerated data type
use the following pattern:
```
import Text.Enum.Utf8
import Text.Utf8
data Foo = FOO_bar | FOO_bar_baz
deriving (Bounded,Enum,Eq,Ord,Show)
instance EnumUtf8 Foo
instance Renderable Foo where render = renderEnumUtf8
instance Utf8Parsable Foo where parseUtf8 = parseEnumUtf8
main :: IO ()
main = mapM_ (cvtLn . render) [minBound..maxBound::Foo]
```
This will use the default configuration for generating the text of each
enumeration from the derived `show` text, namely:
* removing the prefix upto and including the first underscore (`_`);
* converting each subsequent underscore (`_`) into a dash (`-`).
See the Haddocks for details on how to override this default configuration for
any given enumeration type.
Functions for generating and parsing UTF-8 encoded ByteStrings (suitable for
cassava), as are `Hashable` functions.