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

[ bsd3, data, library, xml ] [ Propose Tags ]

Generic generation of HXT XmlPickler instances using GHC Generics.


[Skip to Readme]
Versions [faq] 0.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
Change log CHANGELOG.md
Dependencies base (>=4.5 && <4.9), generic-deriving (>=1.6 && <1.11), ghc-prim (>=0.2 && <0.5), hxt (>=9.2 && <9.4), text [details]
License BSD-3-Clause
Copyright (c) 2015, Silk
Author Silk
Maintainer code@silk.co
Revised Revision 1 made by AdamBergmark at Wed Jan 27 12:44:52 UTC 2016
Category XML, Data
Home page http://github.com/silkapp/generic-xmlpickler
Source repo head: git clone https://github.com/silkapp/regular-xmlpickler.git
Uploaded by AdamBergmark at Thu Nov 19 19:22:22 UTC 2015
Distributions NixOS:0.1.0.6
Downloads 4844 total (202 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2015-12-04 [all 1 reports]

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for generic-xmlpickler-0.1.0.4

[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})