generic-xmlpickler: Generic generation of HXT XmlPickler instances using GHC Generics

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Generic generation of HXT XmlPickler instances using GHC Generics.


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.0.6, 0.1.0.6
Change logCHANGELOG.md
Dependenciesbase (>=4.5 && <4.14), generic-deriving (>=1.6 && <1.14), ghc-prim (>=0.2 && <0.5), hxt (>=9.2 && <9.4), text [details]
LicenseBSD-3-Clause
Copyright(c) 2015, Silk
AuthorSilk
Maintainercode@silk.co
CategoryXML, Data
Home pagehttp://github.com/silkapp/generic-xmlpickler
Source repositoryhead: git clone https://github.com/silkapp/regular-xmlpickler.git
UploadedWed Nov 13 17:16:43 UTC 2019 by AdamBergmark

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for generic-xmlpickler-0.1.0.6

[back to package description]

generic-xmlpickler

Build Status

This package allows you to automatically derive hxt picklers (conversions to and from xml) using GHC Generics. It has been ported from regular-xmlpickler

A simple example:

{-# LANGUAGE DeriveGeneric #-}

import GHC.Generics
import Data.Maybe (listToMaybe)
import Generics.XmlPickler (gxpickle)
import Text.XML.HXT.Arrow.Pickle (XmlPickler (..), showPickled, unpickleDoc)
import Text.XML.HXT.Parser.XmlParsec (xread)

data User = User
  { name  :: String
  , admin :: Bool
  } deriving (Show, Generic)

instance XmlPickler User where
  xpickle = gxpickle


userString :: String
userString = showPickled [] (User "Simon" True)
-- = "<user><name>Simon</name><admin>true</admin></user>"

user :: Maybe User
user = unpickleDoc xpickle =<< listToMaybe (xread "<user><name>Simon</name><admin>true</admin></user>")
-- = Just (User {name = "Simon", admin = True})