An experimental Utf8 parsing toolkit for enumerated types.
An experimental Utf8 rendering and parsing toolkit for enumerated types based on enum-text and render-utf8. Please see the README on GitHub at https://github.com/cdornan/enum-text#readme
enum-utf8
An experimental toolkit for rendering enumerated types into Utf8
from the render-utf8
package) and parsing them back again with the provided Utf8Parsable
type class. It is based on the render-utf8
and 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.